{"version":3,"sources":["redux/appConfig/constants.js","redux/appMenu/actions.js","assets/images/icon-error.png","helpers/authUtils.js","components/Loader.js","components/Spinner.js","services/users.services.js","services/workorder.service.js","assets/images/file-searching.svg","assets/images/users/noprofile.png","assets/images/work-orders/no-image-available.png","assets/images/mail_sent.svg","components/Documentation/img/app-menu.png","components/Documentation/img/app-settings.PNG","components/Documentation/img/search-result.PNG","components/Documentation/img/user-profile.PNG","components/Documentation/img/utility-toggler.PNG","components/Documentation/img/work-list-panel.PNG","components/Documentation/img/asset-based-create-work.PNG","components/Documentation/img/btn-edit.PNG","components/Documentation/img/create-work.PNG","components/Documentation/img/work-details-btn.PNG","pages/GISAssetsConfiguration/images/layer_symbology.PNG","components/PageTitle.js","components/AppMenu.js","redux/auth/constants.js","redux/layout/constants.js","utils/filters/filter.js","redux/auth/actions.js","redux/appMenu/constants.js","utils/DepartmentMembers/DepartmentMembers.jsx","components/FileUploader.js","components/workorders/BackOffice/DepartmentManagement.js","components/Shared/MunicipalityContactInfo.jsx","components/utils/TopLayerSelector/TopLayerSelector.jsx","components/workorders/UtilityToggler.js","components/workorders/BackOffice/PrintWorkOrder.js","components/workorders/BackOffice/ResourcesManagement.js","components/workorders/BackOffice/ServicesManagement.js","components/workorders/BackOffice/SrcSearch.js","components/User/UserProfile.js","components/workorders/BackOffice/UsersManagements.js","components/cctv/CCTVITEM/CCTVItem.jsx","components/cctv/NoVideo/NoVideo.jsx","components/cctv/CCTV.jsx","components/Reports/WorkOrderHistory.js","components/WaterIsolationTrace/service/isolationTrace.service.js","components/WaterIsolationTrace/WaterIsolationTrace.jsx","services/Graphics/graphics.service.js","utils/Inspections/NoDataMessage/NoDataMessage.jsx","utils/Inspections/Reports/ReportFiles.jsx","utils/Inspections/ReportRenderer/ReportRenderer.jsx","utils/Inspections/CCTV/CCTV.jsx","utils/Inspections/HydrantFlowTest/HydrantFlowTest.jsx","utils/Inspections/HydrantFlushing/HydrantFlushing.jsx","utils/Inspections/ManholeInspection/ManholeInspection.jsx","utils/Inspections/ValveExercising/ValveExercising.jsx","components/workorders/Details/Inspections/WOInspection.jsx","components/workorders/Details/RecurrenceUpdate/RecurrenceUpdate.jsx","components/workorders/Details/WorkDetails.js","components/workorders/BackOffice/WorkOrderOfficeDetails.js","components/workorders/Details/Inspections/ArchiveInspection.jsx","components/workorders/Details/ArchiveDetails.js","components/workorders/BackOffice/WorkOrderOfficeArchiveDetails.js","components/workorders/CreateWorkOrder.js","components/workorders/LogWork.js","components/workorders/WorkFieldUpdate.js","components/workorders/WorkOrderDetails.js","components/Shared/FooterList.js","components/workorders/NoWorkOrders.js","components/workorders/WorkOrdersList.js","components/StreetView/GoogleStreetView/GoogleStreetView.js","components/workorders/WorkOrdersMapAction.js","components/workorders/WorkOrders.js","components/workorders/WorkOrdersTable.js","pages/auth/ResetPassword.js","pages/auth/AccountCreateSuccess.js","pages/auth/AccountUnauthorized.js","components/TermsPolicy/Terms.js","components/Shared/WoProblems.js","components/Shared/WoResolutions.js","components/workorders/BackOffice/ProblemResolutions.js","components/workorders/BackOffice/Problems.js","components/workorders/BackOffice/Resolutions.js","components/Reports/ProblemResolutionCost.js","components/workorders/BackOffice/PrintWorkOrderInBatch.js","components/Shared/PrintBatchWorkOrders.js","components/Reports/ResourceUtilization.js","components/Documentation/Documentation.js","components/Documentation/Faq.js","components/Reports/Recurrence/WorkOrdersRecurrence.jsx","pages/GISAssetsConfiguration/GISAssetsConfiguration.jsx","pages/InspectionsManagement/Display/InspectionDisplay.jsx","pages/InspectionsManagement/InspectionsManagement.jsx","pages/AssetWorkHistory/AssetWorkHistory.jsx","components/Reports/ResourceInventoryCritical.js","pages/SignWorkHistory/SignWorkHistory.jsx","pages/SignAnnualReplacements/SignAnnualReplacements.js","routes/index.js","pages/SignPurchaseReport/SignPurchaseReport.js","layouts/Auth.js","components/ThemeCustomizer.js","constants/layout.js","layouts/Vertical.js","layouts/Horizontal.js","layouts/Detached.js","routes/Routes.js","helpers/backend-handler.js","App.js","serviceWorker.js","redux/layout/reducers.js","redux/auth/reducers.js","redux/appMenu/reducers.js","redux/appConfig/reducers.js","redux/reducers.js","redux/auth/saga.js","redux/layout/saga.js","redux/appMenu/utils.js","redux/appMenu/saga.js","redux/appConfig/saga.js","redux/appConfig/request.js","redux/sagas.js","redux/store.js","index.js","redux/layout/actions.js","components/Shared/NoDataAvailable.js","services/CRUDoperations.service.js","assets/images/auth-logo.png"],"names":["SET_CONFIG","CONFIG_FETCH","initMenu","type","INIT_MENU","payload","initMenuSuccess","menuItems","INIT_MENU_SUCCESS","changeActiveMenuFromLocation","CHANGE_ACTIVE_MENU_FROM_LOCATION","changeActiveMenuFromLocationSuccess","activatedMenuItemIds","CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS","module","exports","isUserAuthenticated","user","getLoggedInUser","token","isUserInSupervisorRole","roles","length","findIndex","r","id","Cookies","get","JSON","parse","Loader","className","Spinner","props","children","Tag","tag","role","classNames","color","size","defaultProps","LoggedInUser","_users_api_baseurl","Axios","create","baseURL","process","UserAPI","SignIn","signinObj","post","SetLoggedInUser","GetLoggedInUser","GetUsers","GetUsersByDepartment","department","GetUser","userID","GetApplicationRoles","UpdateUserRoles","userRolesObj","UpdateNotificationPreference","userPreferenceObj","DeleteUser","Entity","EntityObjID","delete","UpdateUser","EntityObj","put","ForgotPassword","accountResetHelperObj","ResetPassword","CreateUser","newAccountUserObj","ConfirmAccount","UpdateUserProfile","userProfileUpdateObj","mapview","workOrderLayerView","userRole","printableWorkOrderObj","request_options","query","f","responseType","workOrderBaserestEndPoint","WorkOrderFeatureLayerUrl","WorkOrderMapServerUrl","WorkOrderFeatureServerUrl","queryDomainURL","userApplicationSettings","isAppInEditMode","isAppInAddingAssetsMode","isAppInDetailMode","workOrdersBatchList","_ListWorkOrders","_applicationLayers","__ApplicationDepartments","requestOptions","_src_service","workorderService","GetAdvancedFeaturesAvailability","IswaterIsolationTraceEnabled","IsCCTVEnabled","GetApplicationDepartments","SetApplicationDepartments","departments","HostedServiceURL","SetMapView","view","mapView","SetUserRole","SetUserAppSettings","settings","GetUserAppSettings","SetApplicationLayers","layers","GetApplicationLayers","SetListWorkOrders","workorders","GetListWorkOrders","SetWorkOrdersBatchList","GetWorkOrdersBatchList","GetUserRole","SetPrintableOrderObj","wodetails","SetAppDetailMode","isDetailMode","GetAppDetailMode","SetAppEditMode","isEditMode","GetAppEditMode","SetAppInAddingAssets","isAddingAssetsMode","GetAppInAddingAssets","GetPrintableOrderObj","GetDepartment","GetConnectedUserAndAssets","uid","SetWorkOrderLayerView","layerView","GetWorkOrderLayerView","GetUserTheme","_theme","localStorage","getItem","theme","GetFeature","attribute","value","loadModules","then","FeatureLayer","SpatialReference","esriConfig","request","interceptors","push","urls","after","response","data","supportedQueryFormats","fLayer","createQuery","where","outFields","outSpatialReference","wkid","queryFeatures","GetAnnualYears","results","features","map","item","attributes","YRREPLACE","filter","index","self","indexOf","sort","GetAnnualWork","GetWorkOrders","config","urlUtils","proxyServer","proxyUrl","urlPrefix","addProxyRule","GetWorkOrderHistory","facilityID","GetManagedOrderDetails","globalID","GetDashboardData","GetProblemResolutionReport","year","GetResourceInventoryCriticalReport","__getEpochTime","humanDate","d","Date","getTime","getMilliseconds","__getISODate","toISOString","split","__getHumanDateAndTime","toLocaleDateString","toLocaleTimeString","__getNextDueDate","occurrenceNumber","workOrderDueDate","OccurrenceDelay","someDate","setDate","getDate","parseInt","setMonth","getMonth","dd","getFullYear","renderStatus","status","NotifyCrossedDepartmentUnassignedWork","unassignedWorkAlertObj","UpdateWorkRelatedDetails","workOrderObj","UpdateWorkRecurrence","recurrenceObj","UpdateWorkorderAssigned","CreateServerWorkOrder","DeleteWorkOrder","workorderID","IsDeleteWorkOptionAvailable","initiatedDate","initDate","_todayDate","Math","abs","GetResourcesByDepartment","departmentID","GetResourcesByGISAsset","gisAssetID","GetEssentialQuestions","workServiceID","GetServices","GetUserWorkSummary","GetWorkOrderAttachments","ObjectID","esriRequest","GetFirstAttachment","objectId","attachmentsResponse","attachment","attachmentInfos","attachmentUrl","console","log","catch","error","getDomains","edits","applyAttributeUpdates","find","layer","refresh","editedAttributesObj","attachmentFile","url","form","FormData","set","append","method","body","serviceName","gisAssets","a","addWorkAssetAction","title","CreateWorkOrderFromAsset","workOrderHistory","logWorkFromAsset","actions","name","getDepartmentGISAssets","gisService","gisServicesUsersConfigurations","us","sublayers","gisAsset","Promise","resolve","reject","layerSubLayers","parentLayerId","trim","fieldInfos","fieldName","visible","label","__GetLayerActionButtons","content","popupTemplate","reverse","MapImageLayer","CrudOperations","Get","idx","serviceLink","__layerInfo","__GetSubLayers","__layerId","replace","mapImageLayer","toLowerCase","add","userSettingsObj","Create","swal","featureLayer","objectIds","returnGeometry","applyEdits","locationPoint","location","popup","_workLocation","longitude","latitude","geometry","Graphic","selectedWorkGLayer","findLayerById","graphics","removeAll","selectWorkGraphic","symbol","outline","width","assetHighlighterGLayer","zoom","goTo","target","isAdd","marker","Status","height","searchTerm","date","todaysDate","dueDate","dateColor","isRecurring","textColor","GetDueDateTextColor","substr","style","fontSize","AppThemeService","SetMapDarkMode","SetMapLightMode","CloseSettings","btnClose","document","getElementById","click","PageTitle","breadCrumbItems","active","key","to","path","userType","MenuItemWithChildren","linkClassNames","subMenuClassNames","aria-expanded","icon","badge","variant","text","child","i","Fragment","MenuItem","linkClassName","MenuItemLink","AppMenu","menuRef","openedMenuItems","componentDidMount","fieldCrew","supervisor","manager","admin","WorkOrderFilter","menu","history","listen","action","classList","remove","el","hide","componentDidUpdate","prevProps","this","mode","MetisMenu","on","event","detail","shownElement","window","addEventListener","menuClick","e","contains","removeEventListener","isHorizontal","activatedKeys","defaultDisplayedItems","screen","displayedItems","slice","otherItems","m","c","header","Component","mapStateToProps","state","AppConfig","withRouter","connect","LOGIN_USER","LOGIN_USER_SUCCESS","LOGIN_USER_FAILED","REGISTER_USER","REGISTER_USER_SUCCESS","REGISTER_USER_FAILED","LOGOUT_USER","FORGET_PASSWORD","FORGET_PASSWORD_SUCCESS","FORGET_PASSWORD_FAILED","RESET_PASSWORD","RESET_PASSWORD_SUCCESS","RESET_PASSWORD_FAILED","CHANGE_LAYOUT","CHANGE_LAYOUT_WIDTH","CHANGE_SIDEBAR_THEME","CHANGE_SIDEBAR_TYPE","TOGGLE_RIGHT_SIDEBAR","SHOW_RIGHT_SIDEBAR","HIDE_RIGHT_SIDEBAR","userAssets","SetUserAssets","assets","FilterActiveWorkByUser","selectedAsset","userUID","__where","u","substring","lastIndexOf","FilterCompletedWork","FilterUserWorkAndShowCompletedFieldUser","workType","filterObj","AssetName","WorkType","__buildShowHideFilterWhereClauseForFieldUser","FilterUserWorkAndHideCompletedFieldUser","isHide","__assetName","__workType","fieldValues","Object","keys","fieldValue","element","field","__user__asset","setTimeout","__buildShowHideFilterWhereClauseForSupervisor","__buildShowHideFilterWhereClause","FilterUserWorkAndShowCompleted","selectedUser","AssignedToID","FilterUserWorkAndHideCompleted","FilterMapWorkOrders","workOrderType","filteredFeatures","isCompletedVisible","loggedUser","filterObjField","FilterMapWorkOrderByDepartment","assetName","__zoomToFilteredFeatures","FilterMapWorkOrderByType","FilterMapWorkOrderByUser","__filterWorkOrdersSelection","__addRemoveSelectionGraphics","loginUser","username","password","loginUserSuccess","loginUserFailed","registerUser","newUserObj","registerUserSuccess","userRegistrationStatus","registerUserFailed","logoutUser","forgetPassword","forgetPasswordSuccess","passwordResetStatus","forgetPasswordFailed","resetPassword","email","code","resetPasswordSuccess","resetPasswordFailed","DepartmentMembers","members","GISAssets","useState","userAndAsset","setUserAndAsset","useEffect","__membersAndAssets","__membersAssets","asset","s","fetchUser","Label","aria-labelledby","firstName","lastName","FileUploader","handleAcceptedFiles","files","allFiles","showPreview","file","assign","preview","URL","createObjectURL","formattedSize","formatBytes","selectedFiles","setState","onFileUpload","bytes","decimals","k","dm","sizes","floor","parseFloat","pow","toFixed","bind","onDrop","acceptedFiles","getRootProps","getInputProps","Card","Row","Col","data-dz-thumbnail","alt","src","_default_thumbnail","DepartmentManagement","toggleNewDepartmentModal","prevState","newDepartmentModal","toggleInviteMembersModal","inviteModal","toggleExistingDepartmentModal","existingDepartmentModal","SetSelectedDepartmentMembers","selectedDepartmentMembers","fetchGIS_Services","__gisServices","assetsOptions","loggedInUser","__setAssetsOptions","gisServicesConfigurationID","__handleAssetSelectionChange","evt","selectedAssets","__getDepartmentUsers","users","GISUsers","__getDepartments","res","isLoading","err","newDepartmentModel","EditDepartment","deptObj","description","thumbnail","selectedDepartment","ShowInviteMembersModel","DeleteDepartment","closeOnClickOutside","buttons","cancel","confirm","dangerMode","VerifyItemUsedForDeletion","result","Delete","__GetThumbnailImageAs64Bit","departmentThumbnail","FR","FileReader","onload","readAsDataURL","__get__department__assets","_DepartmentGISAssets","__asset","departmentGISAssetID","__get__new__department__assets","SetUserAndAssets","handleEditDepartment","values","_DepartmentObj","Update","handleNewDepartment","NewDepartmentObj","__validateEmails","emails","errors","emailsArray","validateEmail","__getEmailNotificationReceivers","emailsObj","emailArray","handleInviteMembers","emailErrors","message","isInvitingMember","_manager","inviteMembersObj","invitationSenderFullName","invitationSenderEmail","appBaseUrl","origin","emailReceivers","departmentName","Post","isNotificationSent","updateThumbnail","selectedThumbnail","_renderUsersOptions","departmentObj","callback","test","String","UncontrolledAlert","__departmentServices","ds","textAlign","marginTop","dept","md","xl","onClick","UncontrolledTooltip","placement","CardBody","paddingBottom","href","openTasks","totalMembers","__renderDepartmentAssets","clear","Button","__renderDepartments","Modal","isOpen","toggle","ModalHeader","ModalBody","onValidSubmit","required","FormGroup","disabled","__renderDepartmentMembers","MunicipalityContactInfo","municipalityInfo","address","city","zipCode","phone","logoUrl","sm","TopLayerSelector","onSelectionChangeSave","isDisabled","selectedOption","userSettings","selectedLayerID","setSelectedLayerID","__saveMyTopLayerChoice","__settingsObj","themeName","notificationType","mostTopLayerID","SaveUserSettings","for","Input","onChange","val","l","UtilityToggler","selectedService","userTopService","userServices","__setUserServices","WOCAssets","ReactDOM","render","__toggleLayerVisibility","layerName","isChecked","items","subL","Water","Storm","Sanitary","Electric","Telecommunication","User","GetByID","__assets","__render_user_choice_topLayer","__renderOtherLayers","CustomInput","checked","OtherLayers","UncontrolledCollapse","toggler","padding","backgroundColor","__renderLayersToggler","PrintWorkOrder","initWorkOrderPrint","_globalID","match","params","globalid","SelectFeatureByGlobalID","featureResult","workOrderResources","workOrderQuestionAnswers","assignedToUID","AssignedUser","GISResources","WorkOrderFeature","initMapView","footer","Map","MapView","GraphicsLayer","listMode","selectedWorkTextGLayer","basemap","ESRImaps","id_base","mapConfig","center","container","ui","move","when","printmarker","textSym","WOID","font","weight","yoffset","__getHumanDate","_d","__getWorkStatus","__getResourcesTotalCost","cost","unit","rate","GlobalFormatter","FormatUSD","q","margin","essentialQuestion","question","answer","OriginatorID","Description","PlannedDate","float","DateCompleted","LocationAddress","FieldNotes","ProblemName","ResolutionName","lg","__renderEssentialQuestion","print","notFoundImg","__renderPrinting","ResourcesManagement","toggleNewModal","newModal","toggleExistingModal","existingModal","__getGISAssets","user_role","__gis__assets","__getResources","__resources","resourceAsset","getGISService","__setResources","resources","newResources","resourceID","currentLevel","criticalLevel","newModel","EditResource","resObj","selectedResource","DeleteResource","handleEdit","_ResourceObj","handleNew","assetID","NewResourceObj","__getDepartmentName","departmentFormatter","resourceObj","editsFormatter","Department","TableWithSearch","SearchBar","Search","ExportCSVButton","CSVExport","defaultSorted","dataField","order","columns","formatter","cell","bootstrap4","keyField","search","exportCSV","onlyExportFiltered","exportAll","searchProps","csvProps","baseProps","bordered","paging","wrapperClasses","striped","hover","__renderResources","marginBottom","ServicesManagement","__getServices","__services","services","updateResourcesArrayWithDepartmentName","servicesArray","essentialQuestions","EditService","selectedAssetObj","DeleteService","servObj","_updatedObj","__getEssentialQuestions","forEach","hasOwnProperty","essentialQuestionObj","essentialQuestionID","_newService","AddNewEssentialQuestion","RemoveFromAddedQuestions","splice","userDepartment","InputGroupAddon","cursor","addonType","placeholder","expandRow","renderer","row","__renderServices","renderEssentialQuestions","SrcSearch","rnderViewDetail","attr","GlobalID","DepartmentName","AssignedToUID","isUserSupervisor","searchResults","DoSRCSearch","departmentResultsFilter","ListGroup","ListGroupItem","ListGroupItemHeading","ListGroupItemText","Originator","__renderSearchResult","UserProfile","toggleProfileChangeModal","modal","UserAssets","GISServices","getUserInfo","summary","totalWorkOrders","activeWorkOrders","unassignedWorkOrders","__renderUserAssets","updateUserProfile","phoneProvider","notificationPreference","isUpdatingProfile","mobilePhone","phoneLineProvider","finally","profileImg","jobTile","phoneNumber","company","creationDate","Alert","Table","responsive","renderuserInfo","_renderDepartmentOptions","mask","maskChar","InputMask","UsersManagements","handleChange","checkedItems","EditUser","userObj","firstname","lastname","IsUserInRole","isManager","__getUsers","approles","__woc_roles","b","__admin_user","appRoles","dateFormatter","handleGIS_Assets_Users","__bulkAssets","__config__asset","__configObj","__userRolesObj","UserID","RoleIDs","userWOCRoleID","Err","userroles","userrole","woc_role","handleRoleChange","roleID","checkboxes","__renderUsers","isMulti","options","classNamePrefix","CCTVItem","video","NoVideo","__stylePanelHeader","position","__listPanelContentScroller","top","left","right","bottom","overflow","btnOfficeWrapper","_btnFooter","CCTV","__loadVideos","some_videos","videos","v","CardHeader","__renderComponent","CardFooter","overflowX","WorkOrderHistory","workhistory","marginRight","renderComponent","w","workOrder","workCreatedBy","dateCreated","workAssignedTo","__isolation__trace__service","REACT_APP_ISOLATION_TRACE_SERVICE","IsolationTraceService","traceLocations","TraceParameters","geoprocessor","spatialReference","traceType","submitJob","WaterIsolationTrace","getLineLastPoint","feature","lastIdx","paths","getPoint","performTrace","waterisolationTraceGL","isPerformingTrace","areBothPointsAvailable","close","mapGraphics","getSymbol","featureType","__GetLayerURLAndIDs","layerURL","IDs","highlightAssetsAndZoomToExtent","__doFindMultipleAssets","highlightAssetAndZoomTo","FindTask","__getSingleTask","task","__zoomTo","fid","serviceUrl","FindParameters","layerIds","searchFields","searchText","execute","__whereClause","QueryTask","Query","queryTask","__doFindAsset","_gLayer","gr","TaskFeatures","NoDataMessage","reportFiles","reportExtension","reportUrl","str","reportName","fileSize","ReportRenderer","photos","reports","activeTab","setActiveTab","Nav","tabs","NavItem","NavLink","TabContent","TabPane","tabId","ReportFiles","workorderid","renderInspectionComponent","CCTVvideos","setVideos","CCTVPhotos","setCCTVPhotos","CCTVReportFiles","setFiles","__fetch__report","__reports_files","reportType","__photo_files","__video_files","HydrantFlowTest","facilityIDs","HydrantFlushing","ManholeInspection","ValveExercising","WOInspection","inspectionFeatures","workorder","inspectionsModules","setInspectionsModules","inspectionsModuleArray","__gis__layer_name","__feature_class_name","insp","inspectionLayers","featureClass","fetchInspectionsModules","inspectionName","RecurrenceUpdate","reccurenceNber","reccurenceDelay","goBack","setModal","isChangingRecurrence","setIsChangingRecurrence","toggleModal","updateFeatures","ApplyWorkOrderEdits","updateFeatureResults","__cancelRecurrence","recurrence","nextDueDate","updateDataResponse","recurrenceDelay","Recurrence","_nextDueDate","__updaterecurrence","min","WorkDetails","tab","toggleWorkChangeModal","fetchInspections_Data","enabledInspections","isEnabled","fetchOrderDetails","userData","selectedWork","selectedWorkAsset","workAssignedToUserObj","workAssignedToUser","userWorkSummary","IsWorkAssigned","workStatus","IsRecurring","recurrenceArr","detail_content","workOrderID","OBJECTID","resp","GISAttachments","altText","caption","__GetUsersByDepartment","__zoomToAssetsExtent","IsZoomingToExtent","__goToAssets","__zoomToAsset","activeAsset","IsZoomingToAsset","SetWorkAssignedTo","__renderWorkAssigned","__usersOptions","htmlFor","ariadescribedby","__renderButtonChangeWorkAssignedTo","changeWorkAssignedTo","isChangingAssignedTo","__workOrderObj","sender","__isRecurringUpdate","isrecurring","isShowing","unassignWork","IsUnassigningWork","assignedToID","__setInspectionStateComponent","compoment","activeInspectionComponent","__renderInspectionComponent","reportBaseUrl","isReclassifyingWork","unassignedWorkStatus","isClaimingWork","applicationUsers","DepartmentsUsers","activeInspectionProps","borderColor","minWidth","fontWeight","colSpan","UncontrolledCarousel","indicators","controls","classnames","paddingTop","NextDueDate","_renderAssets","_renderResources","_renderAttachments","_renderEssentialQuestions","WorkOrderOfficeDetails","openModalWithHeaderClass","headerClassName","openModalWithBodyClass","bodyClass","setWorkDeleteAvailability","isDeleteEnabled","__returnToWorkList","URLSearchParams","__deleteWorkOrder","deleteFeatures","deleteFeatureResults","DateInitiated","isClaimedWork","ArchiveInspection","ArchiveDetails","selWork","dateCompleted","plannedDate","locationAddress","problemName","resolutionName","fieldNotes","WorkOrderOfficeArchiveDetails","gobalID","CreateWorkOrder","__user","curr","departmentData","GISServicesTypes","GISProblemsTypes","__gis__services","__gis__problems","problems","problemAsset","GISRestServicesOptions","o","GISRestServices","IsReccurrence","__configureServicesProblemsSelection","__configureServicesSelection","GISServicesType","GISProblems","GISProblemsType","problemID","OnWorkTypeSelectionChange","selectedWorkType","OnProblemTypeSelectionChange","selectedProblemType","OnWorkUserAssignedSelectionChange","OnAssetSelectionChange","selectedGISService","WorkAssignedToUsersOptions","t","SelectedGISAsset","selectedGISAsset","__initWorkCreateSteps","assetDepartment","workAssetDetails","handleWorkCreationFromURL","userDefaultAsset","sourceLayer","__getCaseSensitiveAttributeName","fieldAliases","toUpperCase","onAddmoreAssets","isAddingMoreAssets","_gisServicesConfigurationID","selectedFeature","mySensitiveField","__source__layer","__service","__gisAsset","addAsset","OccurrenceNumber","someFormattedDate","nextOccurenceDueDate","UpdateOccurrenceNumber","UpdateOccurrenceDelay","departmentOptions","__initAddressAndSketchModelView","__GetUsersAndServicesByDepartment","__GetProblemsByDepartment","dep","GetServicesByDepartment","__getUsersByDepartmentWithActiveWorkTally","__toggleCreationLoader","__loaders","getElementsByClassName","__toggleLocationActiveStatus","toggleLocationBtn","preventDefault","__handleMapClickedForLocation","__handleNewWorkLocationAndAddress","GetAddressFromLocation","geocoderresult","Address","NewWorkOrderAddress","IsNewWorkAttributesVisible","workCreateLocationGL","NewWorkOrderGraphic","SketchModel","update","handler","stopPropagation","mapPoint","point","clone","z","undefined","hasZ","__SelectUserConfiguredTopAsset","defaultAsset","_renderServicesOptions","_renderProblemsOptions","SketchViewModel","sketch","pointSymbol","updateOnGraphicClick","snappingOptions","enabled","graphic","WorkOrderGeometry","sketchDisplay","allPlaceholder","StAddr","centroid","isUILoading","SetWorkType","__UpdateUsersAndServicesByDepartment","CancelWorkCreation","__createNewWork","workDescription","isSubmittingWork","__IsWorkAssigned","__workAssignedTo","__workAssignedToUID","__esri_date","toGMTString","OriginatorUID","ProblemID","ResolutionID","AssetID","DepartmentID","XCOORD","x","YCOORD","y","featureGraphique","addFeatures","addFeatureResults","_workOrderObj","globalId","isWorkAssigned","originatorUID","workOrderGISAsset","xcoord","ycoord","serverResponse","__newly_created_feature","__new__feature","__update__feature__class","handleAddWorkLocationOnMap","IslocationBtnActive","locationBtnActive","SRCUsers","WorkAssignedToUser","SelectedWorkType","SelectedProblemType","SelectedUserAssignedTo","WorkAssignedTo","highlight","ismappingNewWork","isAssetBasedWork","isWorkAddressFound","workTypeOptions","assignedToOptions","DateRequired","destroy","__handleAssignWorkToChange","display","noValidate","rows","LogWork","__gis__resolutions","resolutions","resolutionAsset","GISResolutionsTypes","GISResolutions","GISResolutionsType","resolutionID","OnResolutionTypeSelectionChange","selectedResolutionType","__initWorkLogSteps","workLogLocationGL","_renderResolutionsOptions","SelectedResolutionType","WorkFieldUpdate","toggleResourcesSelectionTab","activeTabResourceSelection","toggleProblemResolutionModal","problemResolutionModal","attachmentChanged","reader","ImageUrl","AttachmentUrl","AttachmentFile","workAttachmentName","Resources","deleteWorkAsset","_index","__initEditor","__flushSelectedWork","OnResourceSelect","SelectedResourceObj","qty","IsResourceSelected","RemoveFromAddedresources","resource","__updateSelectedResourceObjCost","__addToWorkResources","beforeSubmit","__addCustomResource","InputCustomResourceName","InputCustomResourceRate","InputCustomResourceType","InputCustomResourceQty","updateWorkInfo","isComplete","QuestionsNotAnswered","_questions","__getPRAsset","__getPRResource","isSubmittingWorkEdits","__getProblemName","__getResolutionName","duedate","RefreshWorkOrders","AddAttachmentToWorkOrder","attachmentResults","attachmentError","WorkOrderDetails","__CreateRecurrentNextWorkOrder","__handleBtnUpdateClick","_nextWorkOrderObj","WorkServiceID","handleAddProblemResolutions","workOrderProblemResolutions","workOrderProblemResolution","p","requireAsset","requireResource","validateFormAndSubmit","workOrderEditForm","editFeature","AddedWorkResources","SelectedWorkResource","RequiredAsset","RequiredResource","GetProblemResolutionsByAsset","problemsRes","__submitWorkEdits","maxHeight","aria-describedby","format","_renderProblemOptions","_renderResolutionOptions","visibility","reclassifyWorkOrder","reclassifyWork","__reason","ClaimUnassignedWork","aria-hidden","__renderOptionalButton","FooterList","zoomToList","printWorkOrdersInBatch","NoWorkOrders","btnFieldEditorWrapper","WorkOrdersList","__getActiveWorkOrders","notCompletedWorkArray","isOverdueWork","isDueThisWeek","__clearFlushSelectedWork","loggeduser","__getWorkTypesList","__getWorkAssetsList","__getWorkListUsers","sortAscending","selectedWorkID","_link","scrollIntoView","behavior","__showWorkOrderDetailsBasedOnStatus","__viewArchiveDetails","_view","workOrdersFlayer","__viewWorkOrderDetails","GoToSelectedWork","__showCompletedWorkDetails","__showArchivedWorkDetails","orders","workTypes","Set","workAssets","workListUsers","__setWorkTypes","sortDescending","arr","resetOrdersHilight","elements","btn","__ZoomToWorkOrder","_detailsBtn","__LinkTag","tagName","parentNode","closest","_work_details_option","__toggleBatchPrintItem","printBatchItems","itemIndex","__createNewWorkOrder","sortList","sortText","sortIcon","reorderItemsBatchChecked","uncheckListSelection","checkbox","toggleCompleteWorkVisibilityFieldUser","toggleCompleteText","toggleCompleteIcon","completedWorkToolTip","__FilterWorkOrders","toggleCompleteWorkVisibility","showSelected","__filteredArray","includes","refreshList","__filteredWork","fw","__filterWorkOrdersByAsset","toggleWorkListBackGroundSelection","__filterWorkOrdersByType","__filterWorkOrdersByUser","allWorkOrders","listContentDiv","isFieldCrew","IsAdmin","wo","GetDueDateFormatted","btnListDisabled","renderListComponent","GoogleStreetView","streetView","initialize","node","googleMaps","clearInstanceListeners","canvas","StreetViewPanorama","streetViewPanoramaOptions","addListener","onPanoChanged","getPano","onPositionChanged","getPosition","onPovChanged","getPov","onVisibleChanged","getVisible","onZoomChanged","getZoom","isEqual","pov","otherOptions","prevZoom","prevPov","prevPos","prevOtherOptions","setZoom","setPov","setPosition","setOptions","ref","React","apiKey","lat","lng","heading","pitch","asyncLoading","globalPath","jsonp","WorkOrdersMapAction","__GetDepartmentByID","IsIsolationTraceEnabled","initMapAction","Legend","Expand","Home","Track","ScaleBar","BasemapToggle","Basemap","updateWorkOrderAction","lightBasemap","fromId","nightBasemap","id_alternate","__addGISAssetsToMap","woc__assets","highlightOptions","haloOpacity","fillOpacity","background","dockEnabled","dockOptions","buttonEnabled","breakpoint","watch","featureTemplate","getEffectivePopupTemplate","gisAssetsAddUI","_rightpanel","querySelector","_gisServicesDepartmentID","__TitleAndServiceName","whenLayerView","btn__cctv","btn__waterIso","basemapToggle","nextBasemap","id_aerial","sources","ClientGeocoder","singleLineFieldName","maxResults","maxSuggestions","suggestionsEnabled","minSuggestCharacters","searchWidget","includeDefaultSources","infoDiv","homeBtn","scaleBar","track","expandIconClass","expanded","togglerMapFilterModal","isFieldRole","__user__settings","hitTest","WorkOrders","__renderRightStateComponent","component","activeComponent","activeProps","WorkOrdersTable","__getGlobalID","csvFormatter","_isMounted","handleValidSubmit","isValidToken","_pw_reset_code","isAuthTokenValid","Container","logo","loading","autocomplete","validate","errorImg","Auth","AccountCreateSuccess","renderRedirectToRoot","emailImg","AccountUnauthorized","SrcTerms","WoProblems","booleanFormatter","rowIndex","formatExtraData","problemObj","EditProblem","DeleteProblem","selectedProblem","_ProblemObj","__getProblemResolutions","NewProblemObj","__renderProblemsTable","inline","WoResolutions","resolutionObj","EditResolution","selectedResolution","_ResolutionObj","NewResolutionObj","__renderResolutionsTable","ProblemResolutions","Problems","Resolutions","GetProblemResolutionsByDepartment","deptIndex","departmentIndex","__renderProblemResolutions","ProblemResolutionCost","__getCostReport","years","problemResolutions","typesBreakdowns","selectedYear","generatereport","__getTally","total","reduce","acc","__renderReportTable","footerStyle","column","colIndex","border","columnData","PrintWorkOrderInBatch","mapImgUrl","GoogleStaticMap","ClientGoogleMapsAPIKey","PrintBatchWorkOrders","initMapBatchPrintView","rendertable","paginationFactory","sizePerPage","renderBatchDetails","__batch","rightMenu","btnRightMenuToggler","ResourceUtilization","__getUsage","getProgressColor","totalUsage","NoDataAvailable","Progress","Faq","data-wow-delay","createWork","Height","assetBasedCreateWork","workDetailsBtn","btnEdit","WorkOrdersRecurrence","__renderTableComponent","GISAssetsConfiguration","__departments","isLoadingServices","addService","RemoveService","saveServiceUsers","selectedUsers","serviceConfig","__usersGroup","__serviceUpdateObj","handleGIS_Service","isSaving","__configID","__assetURL","__assetDepartmentID","__setGISURLValidity","axios","validateGISRestUrl","_debounce","ctx","input","cb","__isValidRestUrl","ServicesOptions","Roles","imgSymbology","InspectionDisplay","inspections","gisServices","changeFeatureStatus","onInspectionAssetsUpdate","useSelector","featureClassOptions","setfeatureClassOptions","selectedFeatureClass","setSelectedFeatureClass","__addInspectionLayer","inspection","_service","inspectionLayer","inspectionID","__fetch_feature_classes","_subLayers","__populateFeatureClass","serviceID","service","fc","InspectionsManagement","AssetWorkHistory","workHistory","setWorkHistory","isFetchingHistoryData","setIsFetchingHistoryData","isSearchComplete","setIsSearchComplete","__findWorkHistory","woid","ResourceInventoryCritical","__getCriticalReport","resourceInventoryCritical","SignWorkHistory","workFeature","setWorkFeature","TYPE","STREET","DIRECTION","LOCATION","CODE","SIZE","SignAnnualReplacements","__getAttachmentUrl2","objectID","GetFeatureAttachments","_attachments","__getAttachmentUrl","__getAnnualReport","annualWork","__createWorkOrder","textFilter","filterFactory","Login","lazy","Logout","Register","ForgetPassword","Confirm","WorkOrderDashboard","PrivateRoute","rest","pathname","from","rootRoute","exact","route","printRoute","batchPrintRoute","searchRoute","userProfileRoute","srcTermsRoute","dashboardRoutes","workOrdersTableRoute","docsAppRoutes","appRoutes","pageRoutes","reportRoutes","assetmanagementSignsRoutes","authRoutes","Route","SupRoutes","authProtectedRoutes","allFlattenRoutes","flattenRoutes","routes","flatRoutes","DefaultLayout","componentWillUnmount","fallback","ThemeCustomizer","handleNotificationTypeChange","_loadStateFromProps","_user","getUserTheme","__saveNotificationPreference","_preference","Preference","__userSettingObj","isDark","hideRightSidebar","handleClose","changeLayout","currentTarget","isHorizontalLayout","isCondensed","isDetachedLayout","isBoxed","changeWidthMode","changeLayoutWidth","applyTheme","changeSidebarTheme","changeTheme","isLight","setUserTheme","__saveTheme","changeLeftSiderbarType","isSidebarScrollable","changeSidebarType","layoutType","layoutWidth","leftSideBarType","leftSideBarTheme","showRightSidebar","Layout","LeftSidebar","Topbar","Footer","RightSidebar","emptyLoading","VerticalLayout","openLeftMenu","updateDimensions","innerWidth","layout","hideUserProfile","openLeftMenuCallBack","hideLogo","fluid","Navbar","HorizontalLayout","openMenu","isMenuOpened","navCssClasses","DetachedLayout","openMenuCallback","Routes","getLayout","AuthLayout","layoutCls","nextProps","nextState","oldLayout","newLayout","stringify","realFetch","fetch","opts","endsWith","filteredUsers","responseJson","ok","json","fullname","newUser","headers","Authorization","configureFakeBackend","App","Boolean","hostname","INIT_STATE","initialState","loaded","combineReducers","login","logout","register","watchLoginUser","watchLogoutUser","watchRegisterUser","watchForgetPassword","watchResetPassword","authSaga","setSession","cookies","__accountObj","Email","Password","UserId","Code","IsEmailSent","IsPasswordReset","RememberMe","preferredContact","roleIndex","call","takeEvery","all","fork","changeLeftSidebarTheme","changeLeftSidebarType","toggleRightSidebar","watchChangeLayoutType","watchChangeLayoutWidth","watchChangeLeftSidebarTheme","watchChangeLeftSidebarType","watchToggleRightSidebar","watchShowRightSidebar","watchHideRightSidebar","LayoutSaga","changeBodyAttribute","setAttribute","manageBodyClass","cssClass","changeLeftSidebarThemeAction","changeSidebarTypeAction","changeLayoutWidthAction","uuid","assignIdAndParent","parentId","initMenuAndItems","watchMenuInit","watchMenuChange","appMenuSaga","getActivatedMenuItemIds","matchingItems","menuItem","assignIds","fetchConfig","rootSaga","getState","layoutSaga","appConfigSaga","sagaMiddleware","createSagaMiddleware","middlewares","store","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","reducers","applyMiddleware","run","sagas","configureStore","navigator","serviceWorker","ready","registration","unregister","sidebarType","_src_backend_baseurl","entity","GetProblemResolutions","CurrencyFormater","Intl","NumberFormat","currency","price"],"mappings":"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","file":"static/js/main.470cad06.chunk.js","sourcesContent":["/* APP CONFIG */\r\nexport const SET_CONFIG = 'SET_CONFIG';\r\nexport const CONFIG_FETCH = 'CONFIG_FETCH';\r\n","// @flow\r\nimport {\r\n INIT_MENU,\r\n INIT_MENU_SUCCESS,\r\n CHANGE_ACTIVE_MENU_FROM_LOCATION,\r\n CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS,\r\n} from './constants';\r\n\r\ntype DefaultMenuAction = { type: string, payload: {} };\r\n\r\nexport const initMenu = (): DefaultMenuAction => ({\r\n type: INIT_MENU,\r\n payload: {},\r\n});\r\n\r\nexport const initMenuSuccess = (menuItems: Array<{}>): DefaultMenuAction => ({\r\n type: INIT_MENU_SUCCESS,\r\n payload: { menuItems },\r\n});\r\n\r\nexport const changeActiveMenuFromLocation = (): DefaultMenuAction => ({\r\n type: CHANGE_ACTIVE_MENU_FROM_LOCATION,\r\n payload: {},\r\n});\r\n\r\nexport const changeActiveMenuFromLocationSuccess = (activatedMenuItemIds: Array): DefaultMenuAction => ({\r\n type: CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS,\r\n payload: { activatedMenuItemIds },\r\n});\r\n","module.exports = __webpack_public_path__ + \"static/media/icon-error.680d83f7.png\";","// @flow\r\nimport { Cookies } from 'react-cookie';\r\n\r\n/**\r\n * Checks if user is authenticated\r\n */\r\nconst isUserAuthenticated = () => {\r\n const user = getLoggedInUser();\r\n // console.log(user);\r\n if (!user) {\r\n return false;\r\n }\r\n if (user.token) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n/**\r\n * Checks if user is supervisor\r\n */\r\nconst isUserInSupervisorRole = () => {\r\n const user = getLoggedInUser();\r\n if (!user) {\r\n return false;\r\n }\r\n if (user.roles.length > 0) {\r\n var supervisorID;\r\n\r\n const index = user.roles.findIndex(\r\n (r) => r.id === '017bf016-611d-4ddd-b5d8-f59a998c31f1'\r\n );\r\n return index > -1 ? true : false;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Returns the logged in user\r\n */\r\n\r\nconst getLoggedInUser = () => {\r\n const cookies = new Cookies();\r\n const user = cookies.get('user');\r\n return user ? (typeof user == 'object' ? user : JSON.parse(user)) : null;\r\n};\r\n\r\nexport { isUserAuthenticated, isUserInSupervisorRole, getLoggedInUser };\r\n","import React from 'react';\r\n\r\n/**\r\n * Renders the preloader\r\n */\r\nconst Loader = () => {\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\nexport default Loader;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\ntype SpinnerProps = {\r\n tag?: string,\r\n className?: string,\r\n size?: 'lg' | 'md' | 'sm' | null,\r\n type: 'bordered' | 'grow',\r\n color: string,\r\n children?: PropTypes.object,\r\n};\r\n\r\n/**\r\n * Spinner\r\n */\r\nconst Spinner = (props: SpinnerProps) => {\r\n const children = props.children || null;\r\n const Tag = props.tag;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nSpinner.defaultProps = {\r\n tag: 'div',\r\n type: 'bordered',\r\n color: 'primary',\r\n};\r\n\r\nexport default Spinner;\r\n","import React, { Component } from 'react';\r\nimport Axios from 'axios';\r\n\r\nvar LoggedInUser;\r\n\r\n// users management https request config\r\nexport const _users_api_baseurl = Axios.create({\r\n baseURL: process.env.REACT_APP_USERS_API_URL, //`${window.location.protocol}//${window.location.host}/usersapi/api`, //'http://localhost:51259/api', //'https://demogis.emht.com/usersapi/api', //\r\n});\r\n\r\nexport const UserAPI = {\r\n SignIn: (signinObj) => {\r\n return _users_api_baseurl.post(`/helpers/SignIn`, signinObj);\r\n },\r\n SetLoggedInUser: (user) => {\r\n LoggedInUser = user;\r\n },\r\n GetLoggedInUser: () => {\r\n return LoggedInUser;\r\n },\r\n GetUsers: () => {\r\n return _users_api_baseurl.get(`/users`);\r\n },\r\n GetUsersByDepartment: (department) => {\r\n return _users_api_baseurl.get(`/users/GetUsersByDepartment/${department}`);\r\n },\r\n GetUser: (userID) => {\r\n return _users_api_baseurl.get(`/users/${userID}`);\r\n },\r\n GetApplicationRoles: () => {\r\n return _users_api_baseurl.get(`/helpers/getroles`);\r\n },\r\n UpdateUserRoles: (userRolesObj) => {\r\n return _users_api_baseurl.post(`/users/UpdateUserRolesAsync`, userRolesObj);\r\n },\r\n UpdateNotificationPreference: (userPreferenceObj) => {\r\n return _users_api_baseurl.post(\r\n `/users/UpdateNotificationPreference`,\r\n userPreferenceObj\r\n );\r\n },\r\n DeleteUser: (Entity, EntityObjID) => {\r\n return _users_api_baseurl.delete(`/${Entity}/${EntityObjID}`);\r\n },\r\n UpdateUser: (Entity, EntityObj) => {\r\n return _users_api_baseurl.put(`/${Entity}`, EntityObj);\r\n },\r\n ForgotPassword: (accountResetHelperObj) => {\r\n return _users_api_baseurl.post(\r\n `/Helpers/ForgotPassword`,\r\n accountResetHelperObj\r\n );\r\n },\r\n ResetPassword: (accountResetHelperObj) => {\r\n return _users_api_baseurl.post(\r\n `/Helpers/ResetPassword`,\r\n accountResetHelperObj\r\n );\r\n },\r\n CreateUser: (newAccountUserObj) => {\r\n return _users_api_baseurl.post(`/Helpers/CreateUser`, newAccountUserObj);\r\n },\r\n ConfirmAccount: (accountResetHelperObj) => {\r\n return _users_api_baseurl.post(\r\n `/Helpers/ConfirmAccount`,\r\n accountResetHelperObj\r\n );\r\n },\r\n UpdateUserProfile: (userProfileUpdateObj) => {\r\n return _users_api_baseurl.post(\r\n `/Helpers/UpdateUserProfile`,\r\n userProfileUpdateObj\r\n );\r\n },\r\n};\r\n"," import React, { Component, Fragment } from 'react';\r\nimport Axios from 'axios';\r\nimport { loadModules } from 'esri-loader';\r\nimport { getLoggedInUser, isUserInSupervisorRole } from '../helpers/authUtils';\r\nimport { appConfiguration } from '../components/AppMenu';\r\nimport { CrudOperations } from './CRUDoperations.service';\r\nimport swal from 'sweetalert';\r\n\r\nconst __SAVED__THEME = '__my__theme';\r\n\r\nconst request_options = {\r\n query: {\r\n f: 'json',\r\n },\r\n responseType: 'json',\r\n};\r\n\r\nconst workOrderBaserestEndPoint = process.env.REACT_APP_WOC_BASE_SERVICE;\r\n\r\nconst WorkOrderFeatureLayerUrl = `${workOrderBaserestEndPoint}FeatureServer/0`;\r\n\r\nconst WorkOrderMapServerUrl = `${workOrderBaserestEndPoint}MapServer`;\r\nconst WorkOrderFeatureServerUrl = `${workOrderBaserestEndPoint}FeatureServer`;\r\n\r\nconst queryDomainURL = `${WorkOrderFeatureServerUrl}/queryDomains?layers=0&f=pjson`;\r\nvar mapview;\r\nvar workOrderLayerView;\r\nvar userRole;\r\nvar userApplicationSettings = null;\r\n\r\nvar appConfig;\r\n\r\nvar printableWorkOrderObj;\r\nvar isAppInEditMode = false;\r\nvar isAppInAddingAssetsMode = false;\r\nvar isAppInDetailMode = false;\r\nvar workOrdersBatchList = [];\r\nvar _ListWorkOrders = [];\r\nvar _applicationLayers = [];\r\nvar __ApplicationDepartments = [];\r\n\r\nconst requestOptions = {\r\n query: {\r\n f: 'json',\r\n },\r\n responseType: 'json',\r\n};\r\n\r\n// SRC API http request config\r\nexport const _src_service = Axios.create({\r\n baseURL: process.env.REACT_APP_WOC_API_URL,\r\n});\r\n\r\nexport const workorderService = {\r\n GetAdvancedFeaturesAvailability: () => {\r\n return {\r\n IswaterIsolationTraceEnabled:\r\n process.env.REACT_APP_IsWaterIsolationTrace_Enabled,\r\n IsCCTVEnabled: process.env.REACT_APP_IsCCTV_Enabled,\r\n };\r\n },\r\n GetApplicationDepartments: () => {\r\n return __ApplicationDepartments;\r\n },\r\n SetApplicationDepartments: (departments) => {\r\n __ApplicationDepartments = departments;\r\n },\r\n HostedServiceURL: () => {\r\n return WorkOrderFeatureLayerUrl;\r\n },\r\n SetMapView: (view) => {\r\n mapview = view;\r\n },\r\n mapView: () => {\r\n return mapview;\r\n },\r\n SetUserRole: (role) => {\r\n userRole = role;\r\n },\r\n SetUserAppSettings: (settings) => {\r\n userApplicationSettings = settings;\r\n },\r\n GetUserAppSettings: () => {\r\n return userApplicationSettings;\r\n },\r\n SetApplicationLayers: (layers) => {\r\n _applicationLayers = layers;\r\n },\r\n GetApplicationLayers: () => {\r\n return _applicationLayers;\r\n },\r\n SetListWorkOrders: (workorders) => {\r\n _ListWorkOrders = workorders;\r\n },\r\n GetListWorkOrders: () => {\r\n return _ListWorkOrders;\r\n },\r\n SetWorkOrdersBatchList: (workorders) => {\r\n workOrdersBatchList = workorders;\r\n },\r\n GetWorkOrdersBatchList: () => {\r\n return workOrdersBatchList;\r\n },\r\n GetUserRole: () => {\r\n return userRole;\r\n },\r\n SetPrintableOrderObj: (wodetails) => {\r\n printableWorkOrderObj = wodetails;\r\n },\r\n SetAppDetailMode: (isDetailMode) => {\r\n isAppInDetailMode = isDetailMode;\r\n },\r\n GetAppDetailMode: () => {\r\n return isAppInDetailMode;\r\n },\r\n SetAppEditMode: (isEditMode) => {\r\n isAppInEditMode = isEditMode;\r\n },\r\n GetAppEditMode: () => {\r\n return isAppInEditMode;\r\n },\r\n SetAppInAddingAssets: (isAddingAssetsMode) => {\r\n isAppInAddingAssetsMode = isAddingAssetsMode;\r\n },\r\n GetAppInAddingAssets: () => {\r\n return isAppInAddingAssetsMode;\r\n },\r\n GetPrintableOrderObj: () => {\r\n// console.log(printableWorkOrderObj);\r\n return printableWorkOrderObj;\r\n },\r\n GetDepartment: () => {\r\n return _src_service.get(`/Departments`);\r\n },\r\n GetConnectedUserAndAssets: (uid) => {\r\n return _src_service.get(`/Users/${uid}`);\r\n },\r\n SetWorkOrderLayerView: (layerView) => {\r\n workOrderLayerView = layerView;\r\n },\r\n GetWorkOrderLayerView: () => {\r\n return workOrderLayerView;\r\n },\r\n GetUserTheme: () => {\r\n const _theme = localStorage.getItem(__SAVED__THEME);\r\n if (_theme) {\r\n const __theme = JSON.parse(_theme);\r\n return __theme.theme;\r\n } else return '';\r\n },\r\n\r\n/* GetFeature: (config) => {\r\n appConfig = config;\r\n loadModules([\"esri/request\"]).then(([esriRequest]) => {\r\n // First, define the attribute you want to search for and the value you are looking for\r\n const attribute = \"WOID\";\r\n const value = \"164\";\r\n \r\n // Next, create the query parameters\r\n const queryParams = {\r\n where: `${attribute} = '${value}'`,\r\n outFields: \"*\"\r\n };\r\n\r\n const requestOptions = {\r\n responseType: \"json\"\r\n };\r\n \r\n // Use the esriRequest function to send the query to the map service\r\n esriRequest(`https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_WorkOrders/FeatureServer/0`,\r\n {\r\n query: queryParams,\r\n requestOptions: requestOptions,\r\n }).then(response => {\r\n const feature = response.features[0];\r\n return feature;\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n });\r\n }, */\r\n\r\n GetFeature: (attribute, value) => {\r\n// appConfig = config;\r\n return loadModules([\r\n 'esri/request',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/config',\r\n 'esri/core/urlUtils',\r\n ]).then(\r\n ([esriRequest, FeatureLayer, SpatialReference, esriConfig, urlUtils]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n\r\n/* if (config.proxyServer.length > 0) {\r\n for (let index = 0; index < config.proxyServer.length; index++) {\r\n const { proxyUrl, urlPrefix } = config.proxyServer[index];\r\n\r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix,\r\n });\r\n }\r\n } */\r\n\r\n const fLayer = new FeatureLayer(\r\n `https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/MapServer/1`\r\n );\r\n\r\n var query = fLayer.createQuery();\r\n query.where = `${attribute} = '${value}'`;\r\n query.outFields = ['*'];\r\n query.outSpatialReference = new SpatialReference({ wkid: 102100 });\r\n return fLayer.queryFeatures(query);\r\n }\r\n );\r\n },\r\n\r\n GetAnnualYears: () => {\r\n // appConfig = config;\r\n return loadModules([\r\n 'esri/request',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/config',\r\n 'esri/core/urlUtils',\r\n ]).then(\r\n ([esriRequest, FeatureLayer, SpatialReference, esriConfig, urlUtils]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n \r\n /* if (config.proxyServer.length > 0) {\r\n for (let index = 0; index < config.proxyServer.length; index++) {\r\n const { proxyUrl, urlPrefix } = config.proxyServer[index];\r\n \r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix,\r\n });\r\n }\r\n } */\r\n \r\n const fLayer = new FeatureLayer(\r\n `https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/FeatureServer/1`\r\n );\r\n \r\n var query = fLayer.createQuery();\r\n query.where = 'YRREPLACE > 0';\r\n// query.outFields = ['STREET','YRREPLACE'];\r\n query.outFields = ['YRREPLACE'];\r\n query.outSpatialReference = new SpatialReference({ wkid: 102100 });\r\n fLayer.queryFeatures(query).then(function(results) {\r\n const qryFeatures=results.features;\r\n const unique = qryFeatures\r\n .map((item) => item.attributes.YRREPLACE)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .sort();\r\n return unique;\r\n });\r\n }\r\n );\r\n },\r\n \r\n\r\n GetAnnualWork: (attribute, value) => {\r\n // appConfig = config;\r\n return loadModules([\r\n 'esri/request',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/config',\r\n 'esri/core/urlUtils',\r\n ]).then(\r\n ([esriRequest, FeatureLayer, SpatialReference, esriConfig, urlUtils]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n \r\n /* if (config.proxyServer.length > 0) {\r\n for (let index = 0; index < config.proxyServer.length; index++) {\r\n const { proxyUrl, urlPrefix } = config.proxyServer[index];\r\n \r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix,\r\n });\r\n }\r\n } */\r\n \r\n const fLayer = new FeatureLayer(\r\n `https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/MapServer/1`\r\n );\r\n \r\n var query = fLayer.createQuery();\r\n query.where = `${attribute} = '${value}'`;\r\n// query.outFields = ['STREET','YRREPLACE'];\r\n query.outFields = ['*'];\r\n query.outSpatialReference = new SpatialReference({ wkid: 102100 });\r\n return fLayer.queryFeatures(query);\r\n }\r\n );\r\n },\r\n \r\n\r\n GetWorkOrders: (config) => {\r\n appConfig = config;\r\n return loadModules([\r\n 'esri/request',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/config',\r\n 'esri/core/urlUtils',\r\n ]).then(\r\n ([esriRequest, FeatureLayer, SpatialReference, esriConfig, urlUtils]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n\r\n if (config.proxyServer.length > 0) {\r\n for (let index = 0; index < config.proxyServer.length; index++) {\r\n const { proxyUrl, urlPrefix } = config.proxyServer[index];\r\n\r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix,\r\n });\r\n }\r\n }\r\n\r\n const fLayer = new FeatureLayer(\r\n `${process.env.REACT_APP_WOC_BASE_SERVICE}FeatureServer/0`\r\n );\r\n\r\n var query = fLayer.createQuery();\r\n query.where = `1 = 1`;\r\n query.outFields = ['*'];\r\n query.outSpatialReference = new SpatialReference({ wkid: 102100 });\r\n return fLayer.queryFeatures(query);\r\n }\r\n );\r\n },\r\n GetWorkOrderHistory: (facilityID) => {\r\n return _src_service.get(`/WorkOrders/GetWorkHistory/${facilityID}`);\r\n },\r\n GetManagedOrderDetails: (globalID) => {\r\n return _src_service.get(`/WorkOrders/GetByGlobalID/${globalID}`);\r\n },\r\n GetDashboardData: () => {\r\n return _src_service.get(`/WorkOrders/GetDashboard`);\r\n },\r\n GetProblemResolutionReport: (year) => {\r\n return _src_service.get(`/WorkOrders/GetProblemResolutionReport/${year}`); //THE VIEW WAS REFERENCING A SPECIFIC DATABASE, WHICH HAD CHANGED 11/2/2022 DMM\r\n },\r\n\r\n GetResourceInventoryCriticalReport: () => {\r\n return _src_service.get(`/WorkOrders/GetResourceInventoryCriticalReport`); //THE VIEW WAS REFERENCING A SPECIFIC DATABASE, WHICH HAD CHANGED 11/2/2022 DMM\r\n },\r\n\r\n __getEpochTime: (humanDate) => { \r\n // Returns date in the form of 1659352786000 where the last three are zeros due to the substraction of ms\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n const d = new Date(humanDate);\r\n return d.getTime() - d.getMilliseconds();\r\n },\r\n\r\n __getISODate: (humanDate) => {\r\n // Returns date in the form of 1659352786000 where the last three are zeros due to the substraction of ms\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n const d = new Date(humanDate);\r\n return d.toISOString().split('T')[0];\r\n },\r\n\r\n\r\n __getHumanDateAndTime: (humanDate) => {\r\n // Returns date in the form of 8/1/2022 - 7:19:46 AM\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n if (humanDate) {\r\n const d = new Date(humanDate);\r\n return `${d.toLocaleDateString()} - ${d.toLocaleTimeString()}`;\r\n } else {\r\n return 'N/A';\r\n }\r\n },\r\n\r\n __getNextDueDate: (occurrenceNumber, workOrderDueDate, OccurrenceDelay) => {\r\n var someDate = new Date(workOrderDueDate);\r\n switch (OccurrenceDelay) {\r\n case 'Weeks':\r\n someDate.setDate(someDate.getDate() + parseInt(occurrenceNumber * 7));\r\n break;\r\n case 'Months':\r\n someDate.setMonth(someDate.getMonth() + parseInt(occurrenceNumber));\r\n break;\r\n case 'Years':\r\n break;\r\n default:\r\n someDate.setDate(someDate.getDate() + parseInt(occurrenceNumber));\r\n break;\r\n }\r\n var dd = someDate.getDate();\r\n var mm = someDate.getMonth() + 1;\r\n var y =\r\n OccurrenceDelay === 'Years'\r\n ? someDate.getFullYear() + parseInt(occurrenceNumber)\r\n : someDate.getFullYear();\r\n\r\n var someFormattedDate = mm + '/' + dd + '/' + y;\r\n\r\n return someFormattedDate;\r\n },\r\n\r\n renderStatus: (status) => {\r\n switch (status) {\r\n case 'Unassigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Assigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Archived':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n\r\n case 'Completed':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n }\r\n },\r\n\r\n NotifyCrossedDepartmentUnassignedWork: (unassignedWorkAlertObj) => {\r\n return _src_service.post(\r\n `/Notifications/NotifyCrossedDepartmentUnassignedWork`,\r\n unassignedWorkAlertObj\r\n );\r\n },\r\n UpdateWorkRelatedDetails: (workOrderObj) => {\r\n return _src_service.put(`/WorkOrders`, workOrderObj);\r\n },\r\n UpdateWorkRecurrence: (recurrenceObj) => {\r\n return _src_service.put(`/WorkOrders/UpdateRecurrence`, recurrenceObj);\r\n },\r\n UpdateWorkorderAssigned: (workOrderObj) => {\r\n return _src_service.post(`/WorkOrders/UpdateAssigned`, workOrderObj);\r\n },\r\n CreateServerWorkOrder: (workOrderObj) => {\r\n return _src_service.post(`/WorkOrders`, workOrderObj);\r\n },\r\n\r\n DeleteWorkOrder: (workorderID) => {\r\n return _src_service.delete(`/WorkOrders/${workorderID}`);\r\n },\r\n\r\n IsDeleteWorkOptionAvailable: (initiatedDate) => {\r\n const initDate = new Date(initiatedDate);\r\n const _todayDate = new Date();\r\n var hours = Math.abs(_todayDate - initDate) / 36e5;\r\n return hours < parseInt(process.env.REACT_APP_WORK_DELETE_DELAY_IN_HOURS)\r\n ? true\r\n : false;\r\n },\r\n\r\n GetResourcesByDepartment: (departmentID) => {\r\n return _src_service.get(\r\n `/Resources/GetResourcesByDepartment/${departmentID}`\r\n );\r\n },\r\n GetResourcesByGISAsset: (gisAssetID) => {\r\n return _src_service.get(`/Resources/GetResourcesByAsset/${gisAssetID}`);\r\n },\r\n GetEssentialQuestions: (workServiceID) => {\r\n return _src_service.get(`/Services/${workServiceID}`);\r\n },\r\n GetServices: () => {\r\n return _src_service.get(`/Services`);\r\n },\r\n GetUserWorkSummary: (userID) => {\r\n return _src_service.get(`/WorkOrders/GetUserWorkSummary/${userID}`);\r\n },\r\n\r\n GetWorkOrderAttachments: (ObjectID) => {\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n const _queryAttachmentsURL = `${WorkOrderFeatureLayerUrl}/${ObjectID}/attachments`;\r\n return esriRequest(_queryAttachmentsURL, requestOptions);\r\n });\r\n },\r\n\r\n GetFirstAttachment: (objectId) => {\r\n loadModules(['esri/request']).then(([esriRequest]) => {\r\n const attachmentsUrl = `https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/MapServer/1/${objectId}/attachments`;\r\n esriRequest(attachmentsUrl,requestOptions).then((attachmentsResponse) => {\r\n const attachment = attachmentsResponse.data.attachmentInfos[0];\r\n if (attachment) {\r\n const attachmentUrl = `https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/MapServer/1/${objectId}/attachments/${attachment.id}`;\r\n console.log(objectId,attachment.id)\r\n return attachmentUrl;\r\n } else {\r\n console.log(\"No attachments found for objectId: \", objectId);\r\n }\r\n }).catch(error => {\r\n console.log(\"Error getting attachment URL: \", error);\r\n });\r\n });\r\n },\r\n\r\n getDomains: () => {\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n return esriRequest(queryDomainURL);\r\n });\r\n },\r\n __getEpochTime: (humanDate) => {\r\n // Returns date in the form of 1659352786000 where the last three are zeros due to the substraction of ms\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n const d = new Date(humanDate);\r\n return d.getTime() - d.getMilliseconds();\r\n },\r\n\r\n __getISODate: (humanDate) => {\r\n // Returns date in the form of 1659352786000 where the last three are zeros due to the substraction of ms\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n const d = new Date(humanDate);\r\n return d.toISOString().split('T')[0];\r\n },\r\n\r\n __getHumanDateAndTime: (humanDate) => {\r\n // Returns date in the form of 8/1/2022 - 7:19:46 AM\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n if (humanDate) {\r\n const d = new Date(humanDate);\r\n return `${d.toLocaleDateString()} - ${d.toLocaleTimeString()}`;\r\n } else {\r\n return 'N/A';\r\n }\r\n },\r\n\r\n __getHumanDate: (humanDate) => {\r\n // Returns date in the form of 8/1/2022 - 7:19:46 AM\r\n // Input of new date in the default form of: Mon Aug 01 2022 07:21:37 GMT-0400 (Eastern Daylight Time)\r\n if (humanDate) {\r\n const d = new Date(humanDate);\r\n return `${d.toLocaleDateString()}`;\r\n } else {\r\n return 'N/A';\r\n }\r\n },\r\n\r\n ClaimUnassignedWork: (edits) => {\r\n return workorderService.applyAttributeUpdates(edits);\r\n },\r\n RefreshWorkOrders: () => {\r\n if (mapview) {\r\n const fLayer = mapview.map.layers.find((layer) => {\r\n return layer.id === 'workOrders';\r\n });\r\n fLayer.refresh();\r\n }\r\n },\r\n\r\n ApplyWorkOrderEdits: (editedAttributesObj) => {\r\n return workorderService.applyAttributeUpdates(editedAttributesObj);\r\n },\r\n\r\n AddAttachmentToWorkOrder: (attachmentFile, ObjectID) => {\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n const url = `${WorkOrderFeatureLayerUrl}/${ObjectID}/addAttachment`;\r\n const form = new FormData();\r\n form.set('attachment', attachmentFile);\r\n form.append('f', 'json');\r\n const options = {\r\n method: 'post',\r\n body: form,\r\n query: {\r\n f: 'json',\r\n },\r\n };\r\n return esriRequest(url, options);\r\n });\r\n },\r\n\r\n /* __addUtilityMapService: (\r\n map,\r\n user_department,\r\n utilityMapService,\r\n streetSignsLayer,\r\n treesLayer\r\n ) => {\r\n const user_role = workorderService.GetUserRole();\r\n\r\n let layerSubLayers = [];\r\n\r\n loadModules(['esri/request', 'esri/layers/MapImageLayer'])\r\n .then(([esriRequest, MapImageLayer]) => {\r\n esriRequest(utilityMapService, request_options).then((res) => {\r\n const addWorkAssetAction = {\r\n title: 'Add Work Asset',\r\n id: 'add-work-asset-action',\r\n className: 'esri-icon-plus-circled',\r\n };\r\n const CreateWorkOrderFromAsset = {\r\n title: 'Create Work',\r\n id: 'create-work-action',\r\n className: 'esri-icon-add-attachment',\r\n };\r\n const workOrderHistory = {\r\n title: 'Work History',\r\n id: 'work-history-action',\r\n className: 'esri-icon-rotate-back',\r\n };\r\n const waterIsolationTrace = {\r\n title: 'Isolation Trace',\r\n id: 'water-isolation-action',\r\n className: 'esri-icon-polyline',\r\n };\r\n const cctv = {\r\n title: 'CCTV',\r\n id: 'sewer-cctv-action',\r\n className: 'esri-icon-play-circled',\r\n };\r\n\r\n const __getFeatureActions = (isActionAllowed) => {\r\n //const isInEditMode = true; //document.getElementById('gis-assets-add-ui') ? true : false;\r\n if (isActionAllowed) {\r\n return user_role === 'supervisor' || user_role === 'manager'\r\n ? [\r\n addWorkAssetAction,\r\n workOrderHistory,\r\n CreateWorkOrderFromAsset,\r\n waterIsolationTrace,\r\n cctv,\r\n ]\r\n : [\r\n addWorkAssetAction,\r\n workOrderHistory,\r\n waterIsolationTrace,\r\n cctv,\r\n ];\r\n } else {\r\n if (user_role === 'manager') {\r\n return [\r\n addWorkAssetAction,\r\n workOrderHistory,\r\n CreateWorkOrderFromAsset,\r\n waterIsolationTrace,\r\n cctv,\r\n ];\r\n }\r\n }\r\n };\r\n\r\n res.data.layers.map((layer) => {\r\n if (layer.parentLayerId > -1) {\r\n var isLayerInUserDepartment =\r\n user_role === 'manager'\r\n ? true\r\n : layer.name\r\n .toLowerCase()\r\n .indexOf(user_department.toLowerCase()) > -1;\r\n\r\n layerSubLayers.push({\r\n id: layer.id,\r\n visible: false,\r\n popupTemplate: {\r\n title: layer.name.trim(),\r\n content: [\r\n {\r\n type: 'fields',\r\n fieldInfos: [\r\n {\r\n fieldName: 'FACILITYID',\r\n visible: true,\r\n label: 'FACILITYID',\r\n },\r\n ],\r\n },\r\n ],\r\n actions: __getFeatureActions(isLayerInUserDepartment),\r\n },\r\n });\r\n }\r\n });\r\n\r\n // add layer to map\r\n layerSubLayers = layerSubLayers.reverse();\r\n const UtilityLayer = new MapImageLayer({\r\n url: workorderService.UtilityMapService,\r\n id: '1703a0495d2-util',\r\n title: 'UTILITY',\r\n sublayers: layerSubLayers,\r\n });\r\n\r\n map.add(UtilityLayer, 0);\r\n\r\n const StreetSignsLayer = new MapImageLayer({\r\n url: streetSignsLayer,\r\n id: 'streetSigns',\r\n title: 'Street Signs',\r\n sublayers: [\r\n {\r\n id: 0,\r\n visible: false,\r\n popupTemplate: {\r\n title: 'Street Signs',\r\n content: [\r\n {\r\n type: 'fields',\r\n fieldInfos: [\r\n {\r\n fieldName: 'FACILITYID',\r\n visible: true,\r\n label: 'FACILITYID',\r\n },\r\n ],\r\n },\r\n ],\r\n actions: __getFeatureActions(\r\n user_department === 'General Services' ? true : false\r\n ),\r\n },\r\n },\r\n ],\r\n });\r\n\r\n map.add(StreetSignsLayer, 1);\r\n\r\n const TreesLayer = new MapImageLayer({\r\n url: treesLayer,\r\n id: 'trees',\r\n title: 'Trees',\r\n sublayers: [\r\n {\r\n id: 0,\r\n visible: false,\r\n popupTemplate: {\r\n title: 'Trees',\r\n content: [\r\n {\r\n type: 'fields',\r\n fieldInfos: [\r\n {\r\n fieldName: 'FACILITYID',\r\n visible: true,\r\n label: 'FACILITYID',\r\n },\r\n ],\r\n },\r\n ],\r\n actions: __getFeatureActions(\r\n user_department === 'Parks & Recreation' ? true : false\r\n ),\r\n },\r\n },\r\n ],\r\n });\r\n\r\n map.add(TreesLayer, 2);\r\n });\r\n })\r\n .catch((err) => console.log(`Something went wrong :: ${err}`));\r\n }, */\r\n\r\n __GetLayerActionButtons: async (serviceName, user, gisAssets) => {\r\n const addWorkAssetAction = {\r\n title: 'Add Work Asset',\r\n id: 'add-work-asset-action',\r\n className: 'esri-icon-plus-circled',\r\n };\r\n const CreateWorkOrderFromAsset = {\r\n title: 'Create Work',\r\n id: 'create-work-action',\r\n className: 'esri-icon-add-attachment',\r\n };\r\n const workOrderHistory = {\r\n title: 'Work History',\r\n id: 'work-history-action',\r\n className: 'esri-icon-rotate-back',\r\n };\r\n const logWorkFromAsset = {\r\n title: 'Log Completed',\r\n id: 'log-work-action',\r\n className: 'esri-icon-resend-invitation',\r\n }; \r\n const waterIsolationTrace = {\r\n title: 'Isolation Trace',\r\n id: 'water-isolation-action',\r\n className: 'esri-icon-polyline',\r\n };\r\n const cctv = {\r\n title: 'CCTV',\r\n id: 'sewer-cctv-action',\r\n className: 'esri-icon-play-circled',\r\n };\r\n\r\n let actions = [];\r\n\r\n //console.log('user role :: ', userRole);\r\n switch (userRole) {\r\n case 'manager':\r\n actions = [\r\n workOrderHistory,\r\n CreateWorkOrderFromAsset,\r\n addWorkAssetAction, //LET MANAGER ADD ASSETS FROM THE MAP WHILE EDITING WORK ORDER 11/1/2022 DMM\r\n logWorkFromAsset\r\n ];\r\n break;\r\n\r\n case 'supervisor':\r\n // get supervisor department\r\n const department = __ApplicationDepartments.find(\r\n ({ name }) => name === user.department\r\n );\r\n if (department.getDepartmentGISAssets.length > 0) {\r\n department.getDepartmentGISAssets.map((a) => {\r\n if (a.gisService.name === serviceName) {\r\n actions = [\r\n workOrderHistory,\r\n CreateWorkOrderFromAsset,\r\n addWorkAssetAction, //LET SUPERVISOR ADD ASSETS FROM THE MAP WHILE EDITING WORK ORDER 11/1/2022 DMM\r\n logWorkFromAsset\r\n ];\r\n }\r\n });\r\n }\r\n break;\r\n case 'field':\r\n //console.log(gisAssets);\r\n if (gisAssets.length > 0) {\r\n gisAssets.map((a) => {\r\n if (a.gisServicesUsersConfigurations.length > 0) {\r\n a.gisServicesUsersConfigurations.map((us) => {\r\n// if (us.user.id === user.id) {\r\n if (us.userID === user.id) {\r\n actions = [\r\n workOrderHistory,\r\n addWorkAssetAction,\r\n logWorkFromAsset\r\n ];\r\n }\r\n });\r\n }\r\n });\r\n }\r\n break;\r\n }\r\n return actions;\r\n },\r\n\r\n __GetSubLayers: (sublayers, serviceName, user, gisAsset) => { /* sets up the asset sublayers for actions */\r\n const __promise = new Promise((resolve, reject) => {\r\n let layerSubLayers = [];\r\n sublayers.map(async (layer) => {\r\n if (layer.parentLayerId > -1) {\r\n layerSubLayers.push({\r\n id: layer.id,\r\n visible: false,\r\n popupTemplate: {\r\n title: `${layer.name.trim()} | ${serviceName}`,\r\n content: [\r\n {\r\n type: 'fields',\r\n fieldInfos: [\r\n {\r\n fieldName: 'FACILITYID',\r\n visible: true,\r\n label: 'FACILITYID',\r\n },\r\n {\r\n fieldName: 'FACILITYDETAIL',\r\n visible: true,\r\n label: 'FACILITYDETAIL',\r\n }, \r\n ],\r\n },\r\n ],\r\n actions: await workorderService.__GetLayerActionButtons(\r\n serviceName,\r\n user,\r\n gisAsset\r\n ),\r\n },\r\n });\r\n }\r\n });\r\n layerSubLayers = layerSubLayers.reverse();\r\n resolve(layerSubLayers);\r\n });\r\n return __promise;\r\n },\r\n\r\n __addGISAssetsToMap: (map, user) => {\r\n const _promise = new Promise((resolve, reject) => {\r\n loadModules(['esri/request', 'esri/layers/MapImageLayer']).then(\r\n async ([esriRequest, MapImageLayer]) => {\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n //console.log(data);\r\n workorderService.SetApplicationLayers(data);\r\n\r\n if (data.length > 0) {\r\n // add services to map\r\n data.map(async (d, idx) => {\r\n //console.log(d);\r\n const __layerInfo = await esriRequest(\r\n d.serviceLink,\r\n request_options\r\n );\r\n const layerSubLayers = await workorderService.__GetSubLayers(\r\n __layerInfo.data.layers,\r\n d.name,\r\n user,\r\n data\r\n );\r\n const __layerId = d.name.replace(/ +/g, '');\r\n const mapImageLayer = new MapImageLayer({\r\n url: d.serviceLink,\r\n id: `${__layerId.toLowerCase().trim()}`,\r\n title: d.name,\r\n sublayers: layerSubLayers.reverse(), //DMM 10/12/2022\r\n });\r\n map.add(mapImageLayer, idx);\r\n });\r\n }\r\n resolve(data);\r\n }\r\n );\r\n });\r\n\r\n return _promise;\r\n },\r\n\r\n SaveUserSettings: async (userSettingsObj) => {\r\n var result = await CrudOperations.Create('UserSettings', userSettingsObj);\r\n\r\n swal('Settings saved successfully. You must restart the application to get the updated base map.');\r\n //this.props.hideRightSidebar();\r\n },\r\n\r\n selectFeatureByObjectID: (featureLayer, objectId) => {\r\n // query feature from the server\r\n return featureLayer.queryFeatures({\r\n objectIds: [objectId],\r\n outFields: ['*'],\r\n returnGeometry: true,\r\n });\r\n },\r\n\r\n SelectFeatureByGlobalID: (globalID) => {\r\n // query feature from the server\r\n return loadModules([\r\n 'esri/layers/FeatureLayer',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/config',\r\n ]).then(([FeatureLayer, SpatialReference, esriConfig]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n\r\n const view = workorderService.mapView();\r\n const featureLayer = view.map.layers.find((layer) => {\r\n return layer.id === 'workOrders';\r\n });\r\n\r\n const query = featureLayer.createQuery();\r\n query.where = `GlobalID = '${globalID}'`;\r\n query.outFields = ['*'];\r\n query.outSpatialReference = new SpatialReference({ wkid: 102100 });\r\n query.returnGeometry = true;\r\n\r\n return featureLayer.queryFeatures(query);\r\n });\r\n },\r\n\r\n applyAttributeUpdates: (edits) => {\r\n if (mapview) {\r\n const fLayer = mapview.map.layers.find((layer) => {\r\n return layer.id === 'workOrders';\r\n });\r\n return fLayer.applyEdits(edits);\r\n } else {\r\n return null;\r\n }\r\n },\r\n\r\n GetAddressFromLocation: (view, locationPoint = null) => {\r\n const { location } = view.popup;\r\n const _workLocation = locationPoint ? locationPoint : location;\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n var url = process.env.REACT_APP_REVERSE_GEOCODE_SERVICE +\r\n '?f=pjson&featureTypes=&location=' +\r\n _workLocation.longitude + ',' +\r\n _workLocation.latitude +\r\n ''; //DMM 12/13/2022\r\n/* var url = 'https://gis.mansfieldcity.com/arcgis/rest/services/Miscellaneous/CityAddressLocator/GeocodeServer'\r\n + '/reverseGeocode?f=pjson&featureTypes=&location=' +\r\n _workLocation.longitude +\r\n ',' +\r\n _workLocation.latitude +\r\n ''; */\r\n return esriRequest(url);\r\n });\r\n },\r\n\r\n __flushSelectedWork: (geometry, view) => {\r\n loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n const selectedWorkGLayer = view.map.findLayerById('selectedWorkGLayer');\r\n if (selectedWorkGLayer) {\r\n selectedWorkGLayer.graphics.removeAll();\r\n\r\n /* const flushingSymbol = {\r\n type: 'picture-marker',\r\n url:\r\n 'https://arcgis.github.io/arcgis-samples-javascript/sample-data/cat3.png',\r\n width: 56,\r\n height: 56,\r\n }; */\r\n const flushingSymbol = {\r\n type: 'simple-marker',\r\n outline: { width: 1.25, color: [64, 186, 226, 1] },\r\n size: 30,\r\n };\r\n const selectWorkGraphic = new Graphic({\r\n geometry: geometry,\r\n symbol: flushingSymbol,\r\n });\r\n\r\n selectedWorkGLayer.graphics.add(selectWorkGraphic);\r\n }\r\n });\r\n },\r\n\r\n __clearFlushSelectedWork: (view) => {\r\n if(view && view.map) {\r\n const selectedWorkGLayer = view.map.findLayerById('selectedWorkGLayer');\r\n const assetHighlighterGLayer = view.map.findLayerById('assetHighlighterGLayer');\r\n if (selectedWorkGLayer && assetHighlighterGLayer) {\r\n selectedWorkGLayer.graphics.removeAll();\r\n assetHighlighterGLayer.graphics.removeAll();\r\n }\r\n }\r\n },\r\n \r\n/*\r\n __clearFlushSelectedWork: (view) => { // commented out 9/27/2023\r\n const selectedWorkGLayer = view.map.findLayerById('selectedWorkGLayer');\r\n const assetHighlighterGLayer = view.map.findLayerById(\r\n 'assetHighlighterGLayer'\r\n );\r\n if (selectedWorkGLayer) {\r\n selectedWorkGLayer.graphics.removeAll();\r\n assetHighlighterGLayer.graphics.removeAll();\r\n }\r\n },\r\n\r\n */\r\n\r\n ZoomToSelectedWork: (geometry, view, zoom = 20) => {\r\n view.goTo({\r\n target: geometry,\r\n zoom, // DMM 12/6/2022 - maintains the zoom, but changes the center point\r\n });\r\n },\r\n\r\n GoToSelectedWork: (geometry, view, zoom = 20) => { // ADDED DMM 12/29/2022\r\n view.goTo({\r\n target: geometry,\r\n// zoom, // DMM 12/6/2022 - maintains the zoom, but changes the center point\r\n });\r\n },\r\n\r\n reclassifyWork: (edits) => {\r\n return workorderService.applyAttributeUpdates(edits);\r\n },\r\n __addRemoveSelectionGraphics: (isAdd = false) => {\r\n loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n const selectedWorkGLayer =\r\n mapview.map.findLayerById('selectedWorkGLayer');\r\n if (selectedWorkGLayer) {\r\n selectedWorkGLayer.graphics.removeAll();\r\n if (isAdd) {\r\n workOrdersBatchList.map((f) => {\r\n var marker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url:\r\n f.attributes.Status === 'Unassigned'\r\n ? 'https://static.arcgis.com/images/Symbols/Shapes/RedPin2LargeB.png'\r\n : 'https://static.arcgis.com/images/Symbols/Shapes/YellowPin2LargeB.png',\r\n width: '44px',\r\n height: '44px',\r\n };\r\n selectedWorkGLayer.add(new Graphic(f.geometry, marker));\r\n });\r\n }\r\n }\r\n });\r\n },\r\n\r\n DoSRCSearch: (searchTerm) => {\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n const _searchURL = `${WorkOrderMapServerUrl}/find?searchText=${searchTerm}&contains=true&searchFields=%5B*%5D&layers=0&returnGeometry=false&f=pjson`;\r\n return esriRequest(_searchURL);\r\n });\r\n },\r\n GetDueDateTextColor: (date, status = 'Completed') => {\r\n const todaysDate = new Date().getTime();\r\n const dueDate = new Date(date).getTime();\r\n var dateColor = 'text-success';\r\n switch (status) {\r\n case 'Completed':\r\n break;\r\n\r\n default:\r\n if (dueDate <= todaysDate) {\r\n dateColor = 'text-danger';\r\n } else {\r\n dateColor = 'text-primary';\r\n }\r\n break;\r\n }\r\n return dateColor;\r\n },\r\n GetDueDateFormatted: (d, status, isRecurring = 'No') => {\r\n const textColor = workorderService.GetDueDateTextColor(d, status);\r\n const dueDate = new Date(d).toISOString().substr(0, 10);\r\n return (\r\n <>\r\n {isRecurring === 'Yes' && (\r\n <>\r\n {' '}\r\n \r\n )}\r\n {dueDate}\r\n \r\n );\r\n },\r\n IsAdmin: () => {\r\n const user = getLoggedInUser();\r\n const { roles } = user;\r\n // returns trufy or falsy based on user roles\r\n return (\r\n roles.findIndex((r) => r.id === 'd4463c2c-ae7e-4ea6-86cc-7e24a1d2bbd5') >\r\n -1\r\n );\r\n },\r\n};\r\n\r\nexport const AppThemeService = {\r\n SetMapDarkMode: () => {\r\n if (mapview) {\r\n// mapview.map.basemap = 'streets-night-vector';\r\n// mapview.map.basemap = `${this.props.config.ESRImaps.id_alternate}`;\r\n //AppThemeService.CloseSettings();\r\n }\r\n },\r\n SetMapLightMode: () => {\r\n if (mapview) {\r\n// mapview.map.basemap = 'streets-navigation-vector';\r\n// mapview.map.basemap = `${this.props.config.ESRImaps.id_base}`;\r\n //AppThemeService.CloseSettings();\r\n }\r\n },\r\n CloseSettings: () => {\r\n const btnClose = document.getElementById('btn-close-settings');\r\n if (btnClose) {\r\n btnClose.click();\r\n }\r\n },\r\n};\r\n","module.exports = __webpack_public_path__ + \"static/media/file-searching.521df1b9.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAAAAAAcD2kOAAAAAXNCSVQI5gpbmQAAA4JJREFUaIHt2llP4zAQAOAZJy2UVu1StrvSVoju8f9/EluEQOXoUujdJB4eoAfU17guPKzzFCnjfIntOM7E2IXP2cQnuRGOcIQjHOEIRzjCEf6ALfUtiAgAAEQfCiPm42lWQFI6rKV+NnZ92FF/urrjyknNh/aAxeJ6/sq+0OV2WfLPYroodYnB+UJsHEKRnQ/4fVRfAvN/qoPivpe8uyJMendsWdu5ML8o4GSrCsXDfbIdnPTTY2Zt664U8y4kd/33h3F2o3ABkpuZumG4MOZdAIWMV0oXILkKAr+42zIOct2J8gFPVsOLv68772Tcqvv1ifohYMDlkPBGxkmmP1M+ZclquNxRynRQ1o9ROOK4GphStYydVC+HuGOtDHoZFxxX+xx7yEUQ2EcOAwOlnVWjOcm84doQTWlnte8i8+YUpsvkyVQJBvNkOmK1vblhWHItIMyQqRGsc/Fk+sqbCVgv01GWLeZE2V4/TjJVmoGmPjyZSqfcCa5Lj7DK8qDDHkaduqJZpqJ5xh++3Z4BgyyL6q8W/0PC+RNmOf0DACha6/k2DeolD9b9laK7Z2wmXq77u0wn+76c3cc5bTvvGw4sc4oHlVmlQ8q8wgFlZtlwMrdoMJlZEhHLp6tHdxeZ8/pGpOlkOpNrLLlTZCsCw4jyaTgGBNy8SX/ZEUacPIzemjvKTjDi032mUHeRXWAxvM2Fthd5ynYY88uZnvWWrbAY3GgqeTfZBovrJ01ma0fZAuPFzO56yeZaFJdzt6GJP4YZw0XPOZPDlo356gkjD82VjXDPpX09ZUMsTnmZK55sCh0x+wtLNt3xnOfyZFO6iZdNYcomuFnZo2wKk21mup8jmweQU15ilCObE2yHP/Ymm2Nk/du+ZEuIbLb2JNsi5Mn3/cjWAHnc5s9rHGR7ncjaOlUfUHZJsJV/V9nVbZWdEmzUbrv+FHf+rnIbZmTtT6NwoKn4ov6Dsr05/6oX2e1QmIdQkvVWKevSMqpoNQ0/5lxhAJH1HwF1NhE2miUJmC9lwjPDHJa1OEHI4eMEFTYRVBp1lACwkgl/JobWYa6KQCzG40mGGwsXCKh0VK0mq+73Iltcj+UYiFDMF1meSwJMkrRUPkjeLoDBvEtgcb0WoADgeq0GKbKKmHfB4nouuVFpm4fTM7C4/ouMjBul1uTq/7eeK8IRjnCEIxzhCEf447dnbTqmyC8I+uIAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/no-image-available.0a700505.png\";","module.exports = __webpack_public_path__ + \"static/media/mail_sent.d5e4f040.svg\";","module.exports = __webpack_public_path__ + \"static/media/app-menu.5e5ee012.png\";","module.exports = __webpack_public_path__ + \"static/media/app-settings.abb7d385.PNG\";","module.exports = __webpack_public_path__ + \"static/media/search-result.dcaaf186.PNG\";","module.exports = __webpack_public_path__ + \"static/media/user-profile.73e40065.PNG\";","module.exports = __webpack_public_path__ + \"static/media/utility-toggler.c2b7a4b7.PNG\";","module.exports = __webpack_public_path__ + \"static/media/work-list-panel.abc89d3d.PNG\";","module.exports = __webpack_public_path__ + \"static/media/asset-based-create-work.6ca046e6.PNG\";","module.exports = __webpack_public_path__ + \"static/media/btn-edit.174fd5b7.PNG\";","module.exports = __webpack_public_path__ + \"static/media/create-work.4694ed5d.PNG\";","module.exports = __webpack_public_path__ + \"static/media/work-details-btn.202992be.PNG\";","module.exports = __webpack_public_path__ + \"static/media/layer_symbology.9a2271ba.PNG\";","// @flow\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Row, Col, Breadcrumb, BreadcrumbItem } from 'reactstrap';\r\nimport PropTypes from 'prop-types';\r\n\r\ntype PageTitleProps = {\r\n breadCrumbItems: PropTypes.object,\r\n title: string,\r\n};\r\n\r\n/**\r\n * PageTitle\r\n */\r\nconst PageTitle = (props: PageTitleProps) => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n {/* \r\n Dashboards\r\n */}\r\n {props.breadCrumbItems.map((item, index) => {\r\n return item.active ? (\r\n \r\n {item.label}\r\n \r\n ) : (\r\n \r\n {item.label}\r\n \r\n );\r\n })}\r\n \r\n
\r\n

{props.title}

\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PageTitle;\r\n","// @flow\r\nimport classNames from 'classnames';\r\nimport MetisMenu from 'metismenujs/dist/metismenujs';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, withRouter } from 'react-router-dom';\r\nimport { getLoggedInUser } from '../helpers/authUtils';\r\nimport { changeActiveMenuFromLocation, initMenu } from '../redux/actions';\r\nimport { workorderService } from '../services/workorder.service';\r\nimport { WorkOrderFilter } from '../utils/filters/filter';\r\n\r\nvar userType;\r\n\r\nconst MenuItemWithChildren = ({\r\n item,\r\n linkClassNames,\r\n subMenuClassNames,\r\n activatedMenuItemIds,\r\n}) => {\r\n return (\r\n = 0,\r\n active: activatedMenuItemIds.indexOf(item.id) >= 0,\r\n })}\r\n >\r\n = 0}\r\n >\r\n {item.icon && }\r\n {item.badge && (\r\n \r\n {item.badge.text}\r\n \r\n )}\r\n {item.name} \r\n \r\n\r\n = 0,\r\n })}\r\n aria-expanded={activatedMenuItemIds.indexOf(item.id) >= 0}\r\n >\r\n {item.children.map((child, i) => {\r\n return (\r\n \r\n {child.children ? (\r\n \r\n ) : (\r\n = 0,\r\n })}\r\n linkClassName=\"\"\r\n />\r\n )}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst MenuItem = ({ item, className, linkClassName }) => {\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst MenuItemLink = ({ item, className }) => {\r\n return (\r\n \r\n {item.icon && }\r\n {item.badge && (\r\n \r\n {item.badge.text}\r\n \r\n )}\r\n {item.name} \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders the application menu\r\n */\r\ntype Props = {\r\n initMenu: PropTypes.func,\r\n config: PropTypes.object,\r\n changeActiveMenuFromLocation: PropTypes.func,\r\n menu: PropTypes.object,\r\n mode: string,\r\n history: PropTypes.object,\r\n};\r\nclass AppMenu extends Component {\r\n menuRef = null;\r\n openedMenuItems = [];\r\n\r\n static defaultProps = {\r\n mode: 'vertical',\r\n };\r\n\r\n componentDidMount = () => {\r\n const user = getLoggedInUser();\r\n const fieldCrew = user.roles.findIndex(\r\n (r) => r.id === 'e217ad31-13c9-452e-a800-d2c04215396c'\r\n );\r\n const supervisor = user.roles.findIndex(\r\n (r) => r.id === '017bf016-611d-4ddd-b5d8-f59a998c31f1'\r\n );\r\n const manager = user.roles.findIndex(\r\n (r) => r.id === 'ef05fa07-09f7-4789-8ab6-f89e3c02a8f1'\r\n );\r\n const admin = user.roles.findIndex(\r\n (r) => r.id === 'd4463c2c-ae7e-4ea6-86cc-7e24a1d2bbd5'\r\n );\r\n if (fieldCrew > -1) {\r\n userType = 'field';\r\n }\r\n if (supervisor > -1) {\r\n userType = 'supervisor';\r\n }\r\n if (manager > -1) {\r\n userType = 'manager';\r\n }\r\n if (admin > -1) {\r\n userType = 'admin';\r\n }\r\n workorderService.SetUserRole(userType);\r\n WorkOrderFilter.SetUserRole(userType);\r\n if (!this.props.menu.menuItems) this.props.initMenu();\r\n else this.initMenu();\r\n\r\n this.props.history.listen((location, action) => {\r\n // hide menus in mobile\r\n if (document.body) {\r\n document.body.classList.remove('sidebar-enable');\r\n }\r\n\r\n if (this.menuRef && this.openedMenuItems && this.openedMenuItems.length) {\r\n for (const el of this.openedMenuItems) {\r\n this.menuRef.hide(el);\r\n }\r\n this.openedMenuItems = [];\r\n }\r\n this.props.changeActiveMenuFromLocation();\r\n });\r\n };\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (\r\n !prevProps.menu.menuItems ||\r\n (prevProps.menu.menuItems &&\r\n prevProps.menu.menuItems !== this.props.menu.menuItems)\r\n ) {\r\n this.initMenu();\r\n }\r\n\r\n if (!this.props.menu.activatedMenuItemIds) {\r\n this.props.changeActiveMenuFromLocation();\r\n }\r\n };\r\n\r\n initMenu() {\r\n if (this.props.mode === 'horizontal') {\r\n const menuRef = new MetisMenu('#menu-bar').on(\r\n 'shown.metisMenu',\r\n (event) => {\r\n this.openedMenuItems.push(event.detail.shownElement);\r\n const menuClick = (e) => {\r\n if (!event.target.contains(e.target)) {\r\n menuRef.hide(event.detail.shownElement);\r\n window.removeEventListener('click', menuClick);\r\n }\r\n };\r\n window.addEventListener('click', menuClick);\r\n }\r\n );\r\n this.menuRef = menuRef;\r\n } else {\r\n this.menuRef = new MetisMenu('#menu-bar');\r\n }\r\n }\r\n\r\n __renderMenuPerUsers() {\r\n switch (userType) {\r\n case 'manager':\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n render() {\r\n const isHorizontal = this.props.mode === 'horizontal';\r\n var activatedKeys = isHorizontal\r\n ? []\r\n : this.props.menu\r\n ? this.props.menu.activatedMenuItemIds\r\n ? this.props.menu.activatedMenuItemIds\r\n : []\r\n : [] || [];\r\n\r\n /**\r\n * Horizontal layout - We are controlling how many menu items can be displayed in it\r\n */\r\n let menuItems =\r\n this.props.menu && this.props.menu.menuItems\r\n ? this.props.menu.menuItems\r\n : [];\r\n\r\n const defaultDisplayedItems = window.screen.width > 1366 ? 7 : 5;\r\n if (isHorizontal && menuItems.length > defaultDisplayedItems) {\r\n const displayedItems = menuItems.slice(0, defaultDisplayedItems);\r\n const otherItems = {\r\n id: menuItems.length + 1,\r\n path: '/',\r\n name: 'More',\r\n icon: 'uil-ellipsis-h',\r\n children: menuItems.slice(7, menuItems.length),\r\n };\r\n menuItems = [...displayedItems, otherItems];\r\n }\r\n\r\n switch (userType) {\r\n case 'field':\r\n menuItems = menuItems.filter(\r\n (m) =>\r\n m.path !== '/dashboard' &&\r\n m.path !== '/report' &&\r\n m.path !== '/system' &&\r\n m.path !== '/assetmanagement/signs' // DMM 12/23/2022 - filter out asset management\r\n// m.path !== '/assetmanagement/wastewater' &&\r\n// m.path !== '/assetmanagement/stormwater'\r\n );\r\n break;\r\n case 'supervisor':\r\n menuItems = menuItems.filter(\r\n (m) => m.path !== '/dashboard' //&& m.path !== '/report'\r\n );\r\n menuItems.map((m) => {\r\n switch (m.path) {\r\n case '/system':\r\n m.children = m.children.filter(\r\n (c) =>\r\n c.path !== '/system/departments' &&\r\n c.path !== '/system/users' &&\r\n c.path !== '/system/assets/configuration' &&\r\n c.path !== '/system/inspections/configuration'\r\n );\r\n break;\r\n }\r\n });\r\n break;\r\n case 'manager':\r\n menuItems.map((m) => {\r\n switch (m.path) {\r\n case '/system':\r\n m.children = m.children.filter(\r\n (c) => c.path !== '/system/inspections/configuration'\r\n );\r\n break;\r\n }\r\n });\r\n break;\r\n case 'admin':\r\n break;\r\n }\r\n\r\n return (\r\n \r\n
    \r\n {this.props.menu && menuItems && menuItems.length ? (\r\n
      \r\n {menuItems.map((item, i) => {\r\n //console.log(item.path);\r\n switch (item.path) {\r\n case '/print/:globalid':\r\n case '/batch/print':\r\n case '/search/:q':\r\n case '/user/profile':\r\n case '/src/terms':\r\n case '/gis/services/configuration':\r\n break;\r\n default:\r\n return (\r\n \r\n \r\n {item.header && !isHorizontal && (\r\n \r\n {item.header}\r\n \r\n )}\r\n\r\n {item.children ? (\r\n \r\n ) : (\r\n = 0,\r\n })}\r\n linkClassName=\"side-nav-link\"\r\n />\r\n )}\r\n \r\n \r\n );\r\n break;\r\n }\r\n })}\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n menu: state.AppMenu,\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport const appConfiguration = {\r\n config: mapStateToProps.config,\r\n};\r\nexport default withRouter(\r\n connect(mapStateToProps, {\r\n initMenu,\r\n changeActiveMenuFromLocation,\r\n })(AppMenu)\r\n);\r\n","/* AUTH */\r\nexport const LOGIN_USER = 'LOGIN_USER';\r\nexport const LOGIN_USER_SUCCESS = 'LOGIN_USER_SUCCESS';\r\nexport const LOGIN_USER_FAILED = 'LOGIN_USER_FAILED';\r\nexport const REGISTER_USER = 'REGISTER_USER';\r\nexport const REGISTER_USER_SUCCESS = 'REGISTER_USER_SUCCESS';\r\nexport const REGISTER_USER_FAILED = 'REGISTER_USER_FAILED';\r\nexport const LOGOUT_USER = 'LOGOUT_USER';\r\nexport const FORGET_PASSWORD = 'FORGET_PASSWORD';\r\nexport const FORGET_PASSWORD_SUCCESS = 'FORGET_PASSWORD_SUCCESS';\r\nexport const FORGET_PASSWORD_FAILED = 'FORGET_PASSWORD_FAILED';\r\nexport const RESET_PASSWORD = 'RESET_PASSWORD';\r\nexport const RESET_PASSWORD_SUCCESS = 'RESET_PASSWORD_SUCCESS';\r\nexport const RESET_PASSWORD_FAILED = 'RESET_PASSWORD_FAILED';\r\n","/* LAYOUT */\r\nexport const CHANGE_LAYOUT = 'CHANGE_LAYOUT';\r\nexport const CHANGE_LAYOUT_WIDTH = 'CHANGE_LAYOUT_WIDTH';\r\nexport const CHANGE_SIDEBAR_THEME = 'CHANGE_SIDEBAR_THEME';\r\nexport const CHANGE_SIDEBAR_TYPE = 'CHANGE_SIDEBAR_TYPE';\r\n\r\n/* RIGHT SIDEBAR */\r\nexport const TOGGLE_RIGHT_SIDEBAR = 'TOGGLE_RIGHT_SIDEBAR';\r\nexport const SHOW_RIGHT_SIDEBAR = 'SHOW_RIGHT_SIDEBAR';\r\nexport const HIDE_RIGHT_SIDEBAR = 'HIDE_RIGHT_SIDEBAR';\r\n","import { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { workorderService } from '../../services/workorder.service';\r\n\r\nvar mapview;\r\nvar workOrderLayerView;\r\nvar workOrdersBatchList = [];\r\nvar userAssets = [];\r\nvar userRole;\r\n\r\nexport const WorkOrderFilter = {\r\n SetUserRole: (role) => {\r\n userRole = role;\r\n },\r\n SetMapView: (view) => {\r\n mapview = view;\r\n },\r\n SetWorkOrderLayerView: (layerView) => {\r\n workOrderLayerView = layerView;\r\n },\r\n SetWorkOrdersBatchList: (workorders) => {\r\n workOrdersBatchList = workorders;\r\n },\r\n SetUserAssets: (assets) => {\r\n userAssets = assets;\r\n },\r\n FilterActiveWorkByUser: (\r\n department,\r\n selectedAsset,\r\n userType,\r\n userUID,\r\n userAssets\r\n ) => {\r\n if (workOrderLayerView) { //FILTER WORKORDERS BY USER ROLE FOR MAP\r\n switch (userType) {\r\n case 'field': // SHOW NON-COMPLETE WORK ORDERS WHICH ARE MINE OR ARE UNASSIGNED IN MY DEPARTMENT\r\n// let __where = `(AssignedToUID in ('${userUID}') OR ((Status = 'Unassigned' and DepartmentName in ('${department}'))))`;\r\n\r\n/* let __where = `(Status <> 'Completed') AND (AssignedToUID in ('${userUID}') OR ((Status = 'Unassigned' and DepartmentName in ('${department}'))))`;\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n }; */\r\n if (selectedAsset === '') {\r\n if (userAssets.length > 0) {\r\n// let __where = `(Status <> 'Completed') AND (`;\r\n// let __where = `(Status <> 'Completed') AND (AssignedToUID in ('${userUID}') OR `;\r\n let __where = `(Status <> 'Completed') AND ((AssignedToUID = '${userUID}') OR `;\r\n userAssets.map((a, idx) => {\r\n const __user__asset = a.gisServicesUsersConfigurations.find(\r\n (u) => u.userID === userUID\r\n );\r\n if (__user__asset) {\r\n __where = __where + `((Status = 'Unassigned') AND (AssetName in ('${a.name}'))) OR `;\r\n }\r\n });\r\n\r\n __where = __where.substring(0, __where.lastIndexOf('OR '));\r\n __where = __where + `)`;\r\n\r\n// __where = __where + ` AND AssignedToUID in ('${userUID}')`;\r\n\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n } else {\r\n // don't show\r\n// let __where = `(Status <> 'Completed') AND (AssignedToUID in ('${userUID}') OR ((Status = 'Unassigned' and Department in ('${department}'))))`;\r\n let __where = `(Status <> 'Completed') AND (AssignedToUID = '${userUID}')`;\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n }\r\n } else {\r\n let __where = `(Status <> 'Completed') AND (AssignedToUID in ('${userUID}') OR (Status = 'Unassigned' and AssetName in ('${selectedAsset}')))`;\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n }\r\n break;\r\n case 'supervisor': //SHOW NON-COMPLETE WORK ORDERS IN MY DEPARTMENT\r\n if (selectedAsset === '') {\r\n workOrderLayerView.filter = {\r\n where: `DepartmentName in ('${department}') AND Status <> 'Completed'`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `DepartmentName in ('${department}') AND AssetName in ('${selectedAsset}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n break;\r\n default:\r\n if (selectedAsset === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${selectedAsset}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n },\r\n \r\n FilterCompletedWork: async (department, selectedAsset, userType, userUID) => {\r\n if (workOrderLayerView) {\r\n switch (userType) {\r\n case 'field':\r\n if (selectedAsset === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned'`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND AssetName in ('${selectedAsset}')`,\r\n };\r\n }\r\n break;\r\n case 'supervisor':\r\n if (selectedAsset === '') {\r\n workOrderLayerView.filter = {\r\n where: `DepartmentName in ('${department}') AND Status <> 'Completed'`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `DepartmentName in ('${department}') AND AssetName in ('${selectedAsset}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n break;\r\n default:\r\n if (selectedAsset === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${selectedAsset}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n },\r\n FilterUserWorkAndShowCompletedFieldUser: (\r\n department,\r\n selectedAsset,\r\n workType,\r\n userUID\r\n ) => {\r\n if (workOrderLayerView) {\r\n const filterObj = {\r\n AssetName: selectedAsset,\r\n WorkType: workType,\r\n //AssignedToUID: userUID,\r\n };\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForFieldUser(\r\n department,\r\n userUID,\r\n filterObj,\r\n workOrderLayerView,\r\n true\r\n );\r\n }\r\n },\r\n FilterUserWorkAndHideCompletedFieldUser: (\r\n department,\r\n selectedAsset,\r\n workType,\r\n userUID\r\n ) => {\r\n if (workOrderLayerView) {\r\n const filterObj = {\r\n AssetName: selectedAsset,\r\n WorkType: workType,\r\n //AssignedToUID: userUID,\r\n };\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForFieldUser(\r\n department,\r\n userUID,\r\n filterObj,\r\n workOrderLayerView,\r\n false\r\n );\r\n /* switch (workType) {\r\n case '':\r\n if (department === '') {\r\n // show all\r\n workOrderLayerView.filter = [];\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND Department in ('${department}')`,\r\n };\r\n }\r\n break;\r\n default:\r\n if (department === '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workType}')`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workType}') AND Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND WorkType in ('${workType}') AND Department in ('${department}')`,\r\n };\r\n }\r\n break;\r\n } */\r\n }\r\n },\r\n __buildShowHideFilterWhereClauseForFieldUser: ( \r\n//For Field Users - most complicated - filter by worktype and / or asset class while preserving the ability to limit to mine or unassigned in my asset classes\r\n department,\r\n userUID,\r\n filterObj,\r\n workOrderLayerView,\r\n isHide // = false //HMMMM\r\n ) => {\r\n\r\n let __where = '';\r\n let __assetName = '';\r\n let __workType ='';\r\n\r\n\r\n if (isHide) {\r\n __where = \"Status <> 'Completed' \";\r\n } else {\r\n __where = \"Status > '' \";\r\n }\r\n\r\n const fieldValues = [];\r\n Object.keys(filterObj).map((key, idx) => {\r\n const fieldValue = filterObj[key];\r\n if (fieldValue.trim() === '') {\r\n } else {\r\n fieldValues.push({ [key]: fieldValue.trim() });\r\n }\r\n });\r\n\r\n if (fieldValues.length > 0) {\r\n for (let index = 0; index < fieldValues.length; index++) {\r\n const element = fieldValues[index];\r\n Object.keys(element).map((field, idx) => {\r\n if (field === \"AssetName\"){\r\n __assetName = element[field]\r\n } else {\r\n __workType = element[field]\r\n }\r\n/* if (element[field] === '') {\r\n } else {\r\n __where = __where + ` AND ${field} in ('${element[field]}') `;\r\n } */\r\n });\r\n }\r\n// __where = __where.substring(0, __where.lastIndexOf('AND '));\r\n }\r\n\r\n if (userAssets.length > 0) {\r\n/* if (__where != '') {\r\n __where = __where + ` OR (Status = 'Unassigned' AND (`;\r\n }\r\n else\r\n {\r\n __where = '(';\r\n }; */\r\n if (__workType !=='') {\r\n __where = __where + ` AND (WorkType IN ('${__workType}'))`;\r\n }\r\n if (__assetName !=='') {\r\n const __user__asset = userAssets.find(\r\n (u) => u.name === __assetName);\r\n/* userAssets.map((a, idx) => {\r\n const __user__asset = a.gisServicesUsersConfigurations.find(\r\n (u) => u.userID === userUID\r\n ); */\r\n if (__user__asset){\r\n if (__user__asset.name === __assetName) {\r\n __where = __where + ` AND (((AssignedToUID = '${userUID}') OR (Status='Unassigned')) AND (AssetName in ('${__assetName}'))) `;\r\n }\r\n } else {\r\n __where = __where + ` AND ((AssignedToUID = '${userUID}') AND (AssetName in ('${__assetName}'))) `;\r\n }\r\n// });\r\n } else {\r\n __where = __where + ` AND ((AssignedToUID = '${userUID}') OR `;\r\n userAssets.map((a, idx) => {\r\n const __user__asset = a.gisServicesUsersConfigurations.find(\r\n (u) => u.userID === userUID\r\n );\r\n if (__user__asset) {\r\n __where = __where + ` ((Status = 'Unassigned') AND (AssetName in ('${a.name}'))) OR `;\r\n }\r\n });\r\n __where = __where.substring(0, __where.lastIndexOf('OR '));\r\n __where = __where + \")\";\r\n }\r\n// __where = __where + ')';\r\n\r\n// __where = __where.substring(0, __where.lastIndexOf('OR '));\r\n// __where = __where + '))';\r\n } else {\r\n __where = __where + ` AND AssignedToUID = '${userUID}'`;\r\n if (__assetName !== '') {\r\n __where = __where + ` AND AssetName IN ('${__assetName}')`;\r\n }\r\n if (__workType !=='') {\r\n __where = __where + ` AND WorkType IN ('${__workType}')`;\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n }, 50);\r\n \r\n/* workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n console.log(workOrderLayerView); */\r\n },\r\n __buildShowHideFilterWhereClauseForSupervisor: ( //For Supervisors\r\n department,\r\n filterObj,\r\n workOrderLayerView,\r\n isHide = false\r\n ) => {\r\n const fieldValues = [];\r\n Object.keys(filterObj).map((key, idx) => {\r\n const fieldValue = filterObj[key];\r\n if (fieldValue === '') {\r\n } else {\r\n fieldValues.push({ [key]: fieldValue });\r\n }\r\n });\r\n\r\n if (fieldValues.length > 0) {\r\n // filter department out\r\n let __where = `DepartmentName in ('${department}') AND `;\r\n for (let index = 0; index < fieldValues.length; index++) {\r\n const element = fieldValues[index];\r\n Object.keys(element).map((field, idx) => {\r\n if (element[field] === '') {\r\n } else {\r\n __where = __where + `${field} in ('${element[field]}') AND `;\r\n }\r\n });\r\n }\r\n\r\n __where = __where.substring(0, __where.lastIndexOf('AND '));\r\n\r\n if (isHide) {\r\n __where = __where + ` AND Status <> 'Completed'`;\r\n }\r\n\r\n workOrderLayerView.filter = {\r\n where: __where.trim(), //`AssetName in ('${selectedAsset}') AND WorkType in ('${workType}') AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n } else {\r\n let __where = `DepartmentName in ('${department}')`;\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n if (isHide) {\r\n let __where = `DepartmentName in ('${department}') AND Status <> 'Completed'`;\r\n workOrderLayerView.filter = {\r\n where: __where.trim(),\r\n };\r\n }\r\n }\r\n },\r\n\r\n __buildShowHideFilterWhereClause: ( //for Managers\r\n filterObj,\r\n workOrderLayerView,\r\n isHide = false\r\n ) => {\r\n const fieldValues = [];\r\n Object.keys(filterObj).map((key, idx) => {\r\n const fieldValue = filterObj[key];\r\n if (fieldValue === '') {\r\n } else {\r\n fieldValues.push({ [key]: fieldValue });\r\n }\r\n });\r\n\r\n if (fieldValues.length > 0) {\r\n let __where = '';\r\n for (let index = 0; index < fieldValues.length; index++) {\r\n const element = fieldValues[index];\r\n Object.keys(element).map((field, idx) => {\r\n if (element[field] === '') {\r\n } else {\r\n __where = __where + `${field} in ('${element[field]}') AND `;\r\n }\r\n });\r\n }\r\n\r\n __where = __where.substring(0, __where.lastIndexOf('AND '));\r\n\r\n if (isHide) {\r\n __where = __where + ` AND Status <> 'Completed'`;\r\n }\r\n\r\n workOrderLayerView.filter = {\r\n where: __where.trim(), //`AssetName in ('${selectedAsset}') AND WorkType in ('${workType}') AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n } else {\r\n workOrderLayerView.filter = [];\r\n if (isHide) {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n }\r\n }\r\n },\r\n FilterUserWorkAndShowCompleted: (\r\n department,\r\n selectedAsset,\r\n workType,\r\n selectedUser,\r\n userRole\r\n ) => {\r\n if (workOrderLayerView) {\r\n const filterObj = {\r\n AssetName: selectedAsset,\r\n WorkType: workType,\r\n AssignedToID: selectedUser,\r\n };\r\n switch (userRole) {\r\n case 'supervisor':\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForSupervisor(\r\n department,\r\n filterObj,\r\n workOrderLayerView\r\n );\r\n\r\n break;\r\n case 'manager':\r\n WorkOrderFilter.__buildShowHideFilterWhereClause(\r\n filterObj,\r\n workOrderLayerView\r\n );\r\n break;\r\n }\r\n }\r\n },\r\n\r\n FilterUserWorkAndHideCompleted: (\r\n department,\r\n selectedAsset,\r\n workType,\r\n selectedUser,\r\n userRole\r\n ) => {\r\n if (workOrderLayerView) {\r\n const filterObj = {\r\n AssetName: selectedAsset,\r\n WorkType: workType,\r\n AssignedToID: selectedUser,\r\n };\r\n switch (userRole) {\r\n case 'supervisor':\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForSupervisor(\r\n department,\r\n filterObj,\r\n workOrderLayerView,\r\n true\r\n );\r\n /* if ((department === '') & (selectedUser === '')) {\r\n // hide completed\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n } else if ((department !== '') & (selectedUser === '')) {\r\n workOrderLayerView.filter = {\r\n where: `Department in ('${department}') AND Status <> 'Completed'`,\r\n };\r\n } else if ((department !== '') & (selectedUser !== '')) {\r\n workOrderLayerView.filter = {\r\n where: `Department in ('${department}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n } */\r\n break;\r\n case 'manager':\r\n WorkOrderFilter.__buildShowHideFilterWhereClause(\r\n filterObj,\r\n workOrderLayerView,\r\n true\r\n );\r\n break;\r\n }\r\n }\r\n },\r\n\r\n FilterMapWorkOrders: (\r\n department,\r\n selectedAsset,\r\n workOrderType,\r\n selectedUser,\r\n filteredFeatures,\r\n isCompletedVisible\r\n ) => {\r\n const filterObj = {\r\n AssetName: selectedAsset,\r\n WorkType: workOrderType,\r\n AssignedToID: selectedUser,\r\n };\r\n switch (userRole) {\r\n case 'field':\r\n const loggedUser = getLoggedInUser();\r\n const filterObjField = {\r\n AssetName: selectedAsset,\r\n WorkType: workOrderType,\r\n //AssignedToUID: loggedUser.id,\r\n };\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForFieldUser(\r\n department,\r\n loggedUser.id,\r\n filterObjField,\r\n workOrderLayerView,\r\n isCompletedVisible\r\n );\r\n break;\r\n case 'supervisor':\r\n WorkOrderFilter.__buildShowHideFilterWhereClauseForSupervisor(\r\n department,\r\n filterObj,\r\n workOrderLayerView,\r\n isCompletedVisible\r\n );\r\n\r\n break;\r\n case 'manager':\r\n WorkOrderFilter.__buildShowHideFilterWhereClause(\r\n filterObj,\r\n workOrderLayerView,\r\n isCompletedVisible\r\n );\r\n break;\r\n }\r\n\r\n/* setTimeout(() => { // REMOVED 12/6/2022 DMM\r\n // zoom to filter\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n }, 200); */\r\n },\r\n\r\n FilterMapWorkOrderByDepartment: (\r\n assetName,\r\n workOrderType,\r\n filteredFeatures,\r\n selectedUser\r\n ) => {\r\n if (workOrderLayerView) {\r\n switch (selectedUser) {\r\n case '':\r\n if (assetName === '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n return;\r\n }\r\n if (workOrderType === '' && assetName !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND Status <> 'Completed'`,\r\n };\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n return;\r\n }\r\n if (workOrderType !== '' && assetName === '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workOrderType}') AND Status <> 'Completed'`,\r\n };\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n return;\r\n }\r\n\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND WorkType in ('${workOrderType}') AND Status <> 'Completed'`,\r\n };\r\n break;\r\n\r\n default:\r\n if (assetName === '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n return;\r\n }\r\n if (workOrderType === '' && assetName !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n return;\r\n }\r\n if (workOrderType !== '' && assetName === '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workOrderType}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n return;\r\n }\r\n\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND WorkType in ('${workOrderType}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n break;\r\n }\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n }\r\n },\r\n FilterMapWorkOrderByType: (\r\n workOrderType,\r\n assetName,\r\n role,\r\n userUID,\r\n filteredFeatures,\r\n selectedUser\r\n ) => {\r\n //console.log(filteredFeatures);\r\n if (workOrderLayerView) {\r\n //workOrderLayerView.filter = null;\r\n switch (role) {\r\n case 'field':\r\n if (assetName !== '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND AssetName in ('${assetName}')`,\r\n };\r\n }\r\n if (assetName !== '' && workOrderType !== '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workOrderType}') AND Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND WorkType in ('${workOrderType}') AND AssetName in ('${assetName}')`,\r\n };\r\n }\r\n break;\r\n\r\n default:\r\n switch (selectedUser) {\r\n case '':\r\n if (assetName === '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName === '' && workOrderType !== '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workOrderType}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName !== '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName !== '' && workOrderType !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND WorkType in ('${workOrderType}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n\r\n break;\r\n\r\n default:\r\n if (assetName === '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n }\r\n if (assetName === '' && workOrderType !== '') {\r\n workOrderLayerView.filter = {\r\n where: `WorkType in ('${workOrderType}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n }\r\n if (assetName !== '' && workOrderType === '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n }\r\n if (assetName !== '' && workOrderType !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND WorkType in ('${workOrderType}') AND Status <> 'Completed' AND AssignedToID in ('${selectedUser}')`,\r\n };\r\n }\r\n break;\r\n }\r\n\r\n break;\r\n }\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n }\r\n },\r\n FilterMapWorkOrderByUser: (\r\n selectedUser,\r\n assetName,\r\n role,\r\n userUID,\r\n filteredFeatures\r\n ) => {\r\n //console.log(filteredFeatures);\r\n if (workOrderLayerView) {\r\n //workOrderLayerView.filter = null;\r\n switch (role) {\r\n case 'field':\r\n if (assetName !== '' && selectedUser === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND AssetName in ('${assetName}')`,\r\n };\r\n }\r\n if (assetName !== '' && selectedUser !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssignedToID in ('${selectedUser}') AND Status <> 'Completed' AND AssignedToUID in ('${userUID}') OR Status = 'Unassigned' AND AssignedToID in ('${selectedUser}') AND AssetName in ('${assetName}')`,\r\n };\r\n }\r\n break;\r\n\r\n default:\r\n if (assetName === '' && selectedUser === '') {\r\n workOrderLayerView.filter = {\r\n where: `Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName === '' && selectedUser !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssignedToID in ('${selectedUser}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName !== '' && selectedUser === '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n if (assetName !== '' && selectedUser !== '') {\r\n workOrderLayerView.filter = {\r\n where: `AssetName in ('${assetName}') AND AssignedToID in ('${selectedUser}') AND Status <> 'Completed'`,\r\n };\r\n }\r\n break;\r\n }\r\n WorkOrderFilter.__zoomToFilteredFeatures(filteredFeatures, mapview);\r\n }\r\n },\r\n __filterWorkOrdersSelection: () => {\r\n //console.log(workOrdersBatchList);\r\n if (workOrdersBatchList.length > 0) {\r\n /* let GlobalIDs = '';\r\n workOrdersBatchList.map((w) => {\r\n GlobalIDs += `${w.attributes.GlobalID},`;\r\n });\r\n GlobalIDs = GlobalIDs.substring(0, GlobalIDs.length - 1); */\r\n //this will not work as the filter only works on a sigle field attribute\r\n /* workOrderLayerView.filter = {\r\n where: `GlobalID in ('${GlobalIDs}') AND Status <> 'Completed'`,\r\n }; */\r\n workOrderLayerView.filter = {\r\n where: `GlobalID in ('0') AND Status <> 'Completed'`,\r\n };\r\n workorderService.__addRemoveSelectionGraphics(true);\r\n //workorderService.__zoomToFilteredFeatures(workOrderLayerView, mapview);\r\n }\r\n },\r\n\r\n __zoomToFilteredFeatures: (filteredFeatures, view) => {\r\n view.goTo(filteredFeatures).then(() => {\r\n //console.log('Done zooming...');\r\n });\r\n },\r\n};\r\n","// @flow\r\nimport {\r\n LOGIN_USER,\r\n LOGIN_USER_SUCCESS,\r\n LOGIN_USER_FAILED,\r\n LOGOUT_USER,\r\n REGISTER_USER,\r\n REGISTER_USER_SUCCESS,\r\n REGISTER_USER_FAILED,\r\n FORGET_PASSWORD,\r\n FORGET_PASSWORD_SUCCESS,\r\n FORGET_PASSWORD_FAILED,\r\n RESET_PASSWORD,\r\n RESET_PASSWORD_SUCCESS,\r\n RESET_PASSWORD_FAILED,\r\n} from './constants';\r\n\r\ntype AuthAction = { type: string, payload: {} | string };\r\n\r\nexport const loginUser = (username: string, password: string): AuthAction => ({\r\n type: LOGIN_USER,\r\n payload: { username, password },\r\n});\r\n\r\nexport const loginUserSuccess = (user: string): AuthAction => ({\r\n type: LOGIN_USER_SUCCESS,\r\n payload: user,\r\n});\r\n\r\nexport const loginUserFailed = (error: string): AuthAction => ({\r\n type: LOGIN_USER_FAILED,\r\n payload: error,\r\n});\r\n\r\nexport const registerUser = (newUserObj: {}): AuthAction => ({\r\n type: REGISTER_USER,\r\n payload: newUserObj,\r\n});\r\n\r\nexport const registerUserSuccess = (\r\n userRegistrationStatus: string\r\n): AuthAction => ({\r\n type: REGISTER_USER_SUCCESS,\r\n payload: userRegistrationStatus,\r\n});\r\n\r\nexport const registerUserFailed = (error: string): AuthAction => ({\r\n type: REGISTER_USER_FAILED,\r\n payload: error,\r\n});\r\n\r\nexport const logoutUser = (history: any): AuthAction => ({\r\n type: LOGOUT_USER,\r\n payload: { history },\r\n});\r\n\r\nexport const forgetPassword = (username: string): AuthAction => ({\r\n type: FORGET_PASSWORD,\r\n payload: { username },\r\n});\r\n\r\nexport const forgetPasswordSuccess = (\r\n passwordResetStatus: string\r\n): AuthAction => ({\r\n type: FORGET_PASSWORD_SUCCESS,\r\n payload: passwordResetStatus,\r\n});\r\n\r\nexport const forgetPasswordFailed = (error: string): AuthAction => ({\r\n type: FORGET_PASSWORD_FAILED,\r\n payload: error,\r\n});\r\n\r\nexport const resetPassword = (\r\n email: String,\r\n password: string,\r\n code: String\r\n): AuthAction => ({\r\n type: RESET_PASSWORD,\r\n payload: { email, password, code },\r\n});\r\nexport const resetPasswordSuccess = (error: string): AuthAction => ({\r\n type: RESET_PASSWORD_SUCCESS,\r\n payload: error,\r\n});\r\nexport const resetPasswordFailed = (error: string): AuthAction => ({\r\n type: RESET_PASSWORD_FAILED,\r\n payload: error,\r\n});\r\n","/* APP MENU */\r\nexport const INIT_MENU = 'INIT_MENU';\r\nexport const INIT_MENU_SUCCESS = 'INIT_MENU_SUCCESS';\r\nexport const CHANGE_ACTIVE_MENU_FROM_LOCATION = 'CHANGE_ACTIVE_MENU_FROM_LOCATION';\r\nexport const CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS = 'CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS';\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n Label\r\n} from 'reactstrap';\r\n\r\nconst DepartmentMembers = ({members, GISAssets}) => {\r\n //console.log(members);\r\n const [userAndAsset, setUserAndAsset] = useState([]);\r\n\r\n const fetchUser = () => {\r\n\r\n if(members.length > 0) {\r\n let __membersAndAssets = [];\r\n for (let index = 0; index < members.length; index++) {\r\n const user = members[index];\r\n let __membersAssets = [];\r\n GISAssets.map((asset) => {\r\n if(asset.gisServicesUsersConfigurations.length > 0) {\r\n const userServices = asset.gisServicesUsersConfigurations.find((s) => s.userID === user.id);\r\n if(userServices) {\r\n __membersAssets.push(asset);\r\n }\r\n }\r\n })\r\n __membersAndAssets.push({user, assets: __membersAssets});\r\n }\r\n \r\n setTimeout(() => {\r\n setUserAndAsset(__membersAndAssets);\r\n }, 200);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchUser();\r\n }, [])\r\n\r\n return (\r\n <>\r\n{/* COMMENTED OUT DMM 9/18/2023*\r\n
    */}\r\n \r\n
    \r\n
      \r\n {\r\n userAndAsset.length > 0 && (\r\n <>\r\n {userAndAsset.map((u, idx) => (\r\n
    • \r\n
      \r\n \r\n {u.user.firstName} {u.user.lastName}\r\n \r\n {\r\n u.assets.length > 0 && (\r\n <>\r\n
        \r\n {\r\n u.assets.map((asset, index) => (\r\n
      • \r\n {asset.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 )\r\n }\r\n \r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default DepartmentMembers;\r\n","// @flow\r\nimport React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Row, Col, Card } from 'reactstrap';\r\nimport Dropzone from 'react-dropzone';\r\nimport PropTypes from 'prop-types';\r\n\r\ntype FileUploaderProps = {\r\n onFileUpload?: PropTypes.func,\r\n showPreview?: boolean,\r\n};\r\n\r\ntype FileUploaderState = {\r\n selectedFiles: Array,\r\n};\r\n\r\nclass FileUploader extends Component {\r\n static defaultProps = {\r\n showPreview: true,\r\n };\r\n\r\n constructor(props: FileUploaderProps) {\r\n super(props);\r\n this.handleAcceptedFiles = this.handleAcceptedFiles.bind(this);\r\n\r\n this.state = {\r\n selectedFiles: [],\r\n };\r\n }\r\n\r\n /**\r\n * Handled the accepted files and shows the preview\r\n */\r\n handleAcceptedFiles = (files: Array) => {\r\n var allFiles = files;\r\n\r\n if (this.props.showPreview) {\r\n files.map((file) =>\r\n Object.assign(file, {\r\n preview:\r\n file['type'].split('/')[0] === 'image'\r\n ? URL.createObjectURL(file)\r\n : null,\r\n formattedSize: this.formatBytes(file.size),\r\n })\r\n );\r\n\r\n allFiles = this.state.selectedFiles;\r\n allFiles.push(...files);\r\n this.setState({ selectedFiles: allFiles });\r\n }\r\n\r\n if (this.props.onFileUpload) this.props.onFileUpload(allFiles);\r\n };\r\n\r\n /**\r\n * Formats the size\r\n */\r\n formatBytes = (bytes: number, decimals: number = 2) => {\r\n if (bytes === 0) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n this.handleAcceptedFiles(acceptedFiles)}\r\n >\r\n {({ getRootProps, getInputProps }) => (\r\n
    \r\n
    \r\n \r\n \r\n
    Drop file here or click to upload.
    \r\n \r\n (For better outcome, please make sure your image is{' '}\r\n 800x400px)\r\n \r\n
    \r\n
    \r\n )}\r\n \r\n\r\n {this.props.showPreview && (\r\n
    \r\n {this.state.selectedFiles.map((f, i) => {\r\n return (\r\n \r\n
    \r\n \r\n {f.preview && (\r\n \r\n \r\n \r\n )}\r\n {!f.preview && (\r\n \r\n
    \r\n \r\n {f.type.split('/')[0]}\r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n {f.name}\r\n \r\n

    \r\n {f.formattedSize}\r\n

    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default FileUploader;\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n FormGroup,\r\n Label,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n UncontrolledAlert,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport DepartmentMembers from '../../../utils/DepartmentMembers/DepartmentMembers';\r\nimport FileUploader from '../../FileUploader';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'Departments';\r\n\r\nconst _default_thumbnail =\r\n 'data:image/jpeg;base64,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qVmbVqZmZmbUz8Z+M/B70eiIjd6PRERHvRHo970e973ve3e973ve96ve9VVVVVVVVVdKqyqunUyszM2rVqZmZmRmZn4/joiI9ERGHoiIj0eiJCPeiN3vR73527273ve9VVXqqqqqsqqultTMysupmZm1MzPzUzMzIzMwifBEhHt0hPg9HsJERCN27d73t27d73sy/GVWVVVVVmZVZV0sqtqZtWpm1MzMzPxmZmfwI9ER6JoRNCaERE0IiJoR7310TXrve976767316711671VVVVVdKqqqrpXSq6VVVVmXUyqzNqZmZmfrN30Ij6NGhNehERE0Jo0a6Poe99GumvXfXrvfXrve+vXrvp1666dKqulVVVVVVXSqqqrpZlbSzNpZVZmZmZn6/OmhH10eiIiImhEREREREe9H13o97673vr13vXTr13vp0qq6VVVVVVVV0qqqqqqqqqzKzKz8fjPx+Pzomh70R6IiImhNCIiImvQ97010fXe99D3ve973ve966VVV0qqqqqqqqqqqqqqr8ZVZmZmfjMzPx+iPemhER6IiIiIj0RNd6PfXRHve+h73vr13ver1XXfTpVdKqqqqqqq6VVVVVVWVlbUrMzMzM/Gfj8Y0PRETQiImhERERNCaETXemu973vfXe99eu97673vXXr0qqq9dKrpVVXSqqulVVVVVWVdL8ZlZ+Pxn4/GE16NCaEfRoRERNehNejRo0aNCa7676NevXrvr16769d9evSr316dOnTpXTpVdKrpVVXTpVVVVVVWVVZVVmVmZlmZjQiI9NCImhNejRo0aNejXo0aNGvRr0a9evXr169evXr169d9evXp1666dOnSq6dKquldK6VVdKqqqqqqrPxWZVlZmfjPz0aNCImjXo0PoTRo0aNGhNGvRo16H169d73vr13vr169eu+uunXr1106dK6dOldKqqqqqqqqqqyqqsqvxVZZWZ/LD00aERE0a6PTRoTRo0aHpr0aNevXfRr169d769d9evXr16del6rp0rpVdKq9VVdOlVVVVVVVVVVVWZmZVZlZ+M/DQ+vRr0aNejRo0ImvRo0Po0Jo0a9GvRo16Neu99evXfXr11fXr069L106dOnTp06dK6VVVVVVVVVVVVVVVZWbqs/Gfj9Ho9E0aETRo10TRoTRr169GjRo16NejXo169evXr169evXr169OvXr16dOnSunSulVVV0rpVVVV0qqqqqqsqsqz9fjP00Po0a6aNejRr16NCaNGhNGjXo0aNejXr0a9evXr169evXr169enXr169OvSuldOvTp0qqqqqqqqqqqqqqsy9VVfj8frM/PXoTRo0Jo0aETRo10TRr169GjRo16NevRr169evXr169evXr169evXr06dOnXp0q9V0qunTp0rp0qqqqqqvZVVVV+K/H9//EACMQAAECBgMAAwEAAAAAAAAAACEQIAAwMUBQYAERYVFwcSL/2gAIAQEAAz8AsAw/U4jtp18xVhU4vnHBTafOYGvmwMo4Pu48niQJptvLbrDHAd6ALoOE7nDfsftxWeUChRkuI4jiaLUSgoga8ErmObUz6vEsaXXROMGGhxYNeMfzpRYGixGoBQgaHVkBnUHRw0QWCcIN8MWWhTKLhBeEOgBCoUOEoIEMoZwsNlRgSqhp0AoIDjYhocdSq4LXSAhsauC1SsB4z4aFCBC0xWAysBawYMV1cwUEFKoEqhUKdLDywpVBBUwNbKVUsHGvV1AyxJDzsh1AzSyuriUFKGBj+bcWogNqhgYrm9M4oYCB4UQLX1PcR7gygUWnGE5ujIDBq/TgwzBkOL4tEwKFNr8s7yAmCC4a4cxxK4w/csYz1PcMJQ1LvEe5bu4GK9f7tPv0R3tQmf/EABsRAQADAQEBAQAAAAAAAAAAAAEAEBEgMEBQ/9oACAECAQECAOXl8dm7uzenljGmMY8PLy/axjGMY0087vC87voeTGmNMRpvd4XlfjeGMbY2+e8L9LTGMY0+L0vxHgxtjTwvD67N34WMaYxjH2Xjet7OW2MeG0eXp+ptjGmMaafN+p4Y2xjbw2/GezTGMaaY+TyvzPDGMYxt8WPL5nwsaaafBt+U8WmPDT6PD450dvDbaNvk2+B8bHlj954tNNNtvyZ4Hi8NtMZvi+OZ8Tw9P5DTTTbH8A7W3hpvZvO/Nu7uzZsemtm8v27N3eWmbu7u79ezZu747u7u7N+Tdrd3d3Zu2t//xAAUEQEAAAAAAAAAAAAAAAAAAACg/9oACAECAQM/ABxf/8QAHBEBAQEBAQEBAQEAAAAAAAAAAQARAhAwIBJA/9oACAEDAQECAN3dXV3dXbZ+hEREIiPKPMRCRERHu7uqu6q7u+L8N3RiISLmLl5eYRISIiPd3d3d3f8AIREQ8oly8o8xEXMRHu7u7u75v+E8IeXl5iHm5i5SIiIiPN3d3dt+z+SIiIi5ebmLmLmIiIj/AAPyf0eEREXMXNzcxERER7tv438v+A8IiLm5i5uYiIiIiI8234vzf0eERc3Nzc3MXMRERER+d345n7f0ecxFzc3NzFzERCREfnf2f4j0iLm5uYuYiIiIjw834nwfoRERFzc3NzERERHhPzPi/E9IiIuYuYiIiIiP956REXNzEXMRERER9M+D8c8IiIi5i5iIiIiPhnp8d+B+SIiLmIiIiIiI8zMz7P1ACIuYiIiIiIiPMzM/OfB+gEBARARFzERER7iWWZ/mPSIgLmIiIiIiPczMzMzMzMzLLMyzMszAwAAAAOQCIiIiPCzEzMzMzMzzPcszMzMzMAAAAACACIiI8LP5zEzMzMzMzzLPMyzMwAwAAAAAACI8I9zMzMzP5zMzMzMzMzMzMDAwAAAAAAAIgIj1P5z+czMzEzMzMzMzMzMzADAAAAAAAAAIiPcTP5TMRMzEzMzMzMzMzADAAAAAAAAiPT8J/OYn85iZ/OYmJmZmZn85mAAAcgAAAAAAAEB+P//EABQRAQAAAAAAAAAAAAAAAAAAAKD/2gAIAQMBAz8AHF//2Q==';\r\n\r\nclass DepartmentManagement extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n GISAssets: [],\r\n GISUsers: [],\r\n departments: [],\r\n isLoading: true,\r\n newDepartmentModal: false,\r\n inviteModal: false,\r\n existingDepartmentModal: false,\r\n departmentThumbnail: [],\r\n name: '',\r\n description: '',\r\n manager: '',\r\n thumbnail: _default_thumbnail,\r\n departmentID: 0,\r\n departmentObj: null,\r\n assetsOptions: [],\r\n selectedAssets: [],\r\n selectedDepartment: null,\r\n selectedDepartmentMembers: [],\r\n loggedInUser: null,\r\n isInvitingMember: false,\r\n };\r\n this.toggleNewDepartmentModal = this.toggleNewDepartmentModal.bind(this);\r\n this.toggleInviteMembersModal = this.toggleInviteMembersModal.bind(this);\r\n this.toggleExistingDepartmentModal =\r\n this.toggleExistingDepartmentModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewDepartmentModal = () => {\r\n this.setState((prevState) => ({\r\n newDepartmentModal: !prevState.newDepartmentModal,\r\n }));\r\n };\r\n toggleInviteMembersModal = () => {\r\n this.setState((prevState) => ({\r\n inviteModal: !prevState.inviteModal,\r\n }));\r\n };\r\n toggleExistingDepartmentModal = () => {\r\n this.setState((prevState) => ({\r\n existingDepartmentModal: !prevState.existingDepartmentModal,\r\n }));\r\n };\r\n\r\n SetSelectedDepartmentMembers = async (department) => {\r\n const { data } = await UserAPI.GetUsersByDepartment(department);\r\n this.setState({ selectedDepartmentMembers: data });\r\n };\r\n\r\n fetchGIS_Services = async (loggedUser) => {\r\n const __gisServices = await CrudOperations.Get('GisConfiguration');\r\n this.setState({\r\n GISAssets: __gisServices.data,\r\n assetsOptions: [],\r\n loggedInUser: loggedUser,\r\n });\r\n this.__setAssetsOptions();\r\n };\r\n\r\n __setAssetsOptions = () => {\r\n const { assetsOptions } = this.state;\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.setState({ assetsOptions });\r\n }, 20);\r\n };\r\n\r\n __handleAssetSelectionChange = (evt) => {\r\n setTimeout(() => {\r\n this.setState({ selectedAssets: evt });\r\n }, 20);\r\n };\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n this.fetchGIS_Services(loggedUser);\r\n this.__getDepartmentUsers(loggedUser.department);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getDepartmentUsers = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n this.setState({ GISUsers: users.data });\r\n this.__getDepartments();\r\n });\r\n };\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n this.setState({ departments: res.data, isLoading: false });\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n newDepartmentModel = () => {\r\n // load all users for manager selection\r\n UserAPI.GetUsers().then((users) => {\r\n this.setState({\r\n selectedAssets: [],\r\n GISUsers: users.data,\r\n newDepartmentModal: true,\r\n });\r\n });\r\n };\r\n\r\n EditDepartment = (deptObj) => {\r\n //console.log(deptObj);\r\n let selectedAssets = [];\r\n if (deptObj.getDepartmentGISAssets.length > 0) {\r\n deptObj.getDepartmentGISAssets.map((a) => {\r\n selectedAssets.push({\r\n value: a.gisService.gisServicesConfigurationID,\r\n label: a.gisService.name,\r\n });\r\n });\r\n }\r\n\r\n const { departmentID, name, description, manager, thumbnail } = deptObj;\r\n UserAPI.GetUsersByDepartment(name).then((users) => {\r\n this.setState({\r\n departmentID,\r\n name,\r\n description,\r\n manager,\r\n thumbnail,\r\n GISUsers: users.data,\r\n existingDepartmentModal: true,\r\n selectedAssets,\r\n selectedDepartment: deptObj,\r\n selectedDepartmentMembers: users.data,\r\n });\r\n });\r\n };\r\n ShowInviteMembersModel = (department) => {\r\n this.setState({ selectedDepartment: department, inviteModal: true });\r\n };\r\n DeleteDepartment = (deptObj) => {\r\n swal({\r\n text: `You are about to delete department ${deptObj.name}. Please note if this Department has been linked to a service, it will not be deleted. Are you sure to delete? `,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n // check if department in use\r\n CrudOperations.VerifyItemUsedForDeletion(\r\n deptObj.departmentID,\r\n 'departments'\r\n ).then((result) => {\r\n if (result.data) {\r\n swal(\r\n `Department ${deptObj.name} has been assigned to work order and cannot be deleted.`\r\n );\r\n } else {\r\n // delete\r\n CrudOperations.Delete(Entity, deptObj.departmentID)\r\n .then((res) => {\r\n this.__getDepartments();\r\n swal(`Department ${deptObj.name} deleted successfully.`);\r\n })\r\n .catch((err) => {\r\n swal(\r\n `Unable to delete department ${deptObj.name}. Please try again later`\r\n );\r\n console.log('Error :: ', err);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n __GetThumbnailImageAs64Bit = () => {\r\n const _promise = new Promise((resolve, reject) => {\r\n if (this.state.departmentThumbnail.length > 0) {\r\n const FR = new FileReader();\r\n FR.onload = (e) => {\r\n resolve(e.target.result);\r\n };\r\n FR.readAsDataURL(this.state.departmentThumbnail[0]);\r\n } else {\r\n resolve(_default_thumbnail);\r\n }\r\n });\r\n return _promise;\r\n };\r\n\r\n __get__department__assets = () => {\r\n const getDepartmentGISAssets = [];\r\n if (this.state.selectedAssets && this.state.selectedAssets.length) {\r\n for (let index = 0; index < this.state.selectedAssets.length; index++) {\r\n const _DepartmentGISAssets =\r\n this.state.selectedDepartment.getDepartmentGISAssets[index];\r\n const __asset = this.state.selectedAssets[index];\r\n getDepartmentGISAssets.push({\r\n departmentGISAssetID: _DepartmentGISAssets\r\n ? _DepartmentGISAssets.departmentGISAssetID\r\n : 0,\r\n departmentID: this.state.departmentID,\r\n gisServicesConfigurationID: __asset.value,\r\n });\r\n }\r\n }\r\n\r\n return getDepartmentGISAssets;\r\n };\r\n __get__new__department__assets = () => {\r\n const getDepartmentGISAssets = [];\r\n if (this.state.selectedAssets && this.state.selectedAssets.length) {\r\n for (let index = 0; index < this.state.selectedAssets.length; index++) {\r\n const __asset = this.state.selectedAssets[index];\r\n getDepartmentGISAssets.push({\r\n //departmentGISAssetID: 0,\r\n //departmentID: this.state.departmentID,\r\n gisServicesConfigurationID: __asset.value,\r\n });\r\n }\r\n }\r\n return getDepartmentGISAssets;\r\n };\r\n\r\n SetUserAndAssets = (userID) => {\r\n const __assets = [];\r\n this.state.GISAssets.map((a) => {\r\n //const asset =\r\n });\r\n };\r\n\r\n handleEditDepartment = async (event, values) => {\r\n /* var _thumbnail = await this.__GetThumbnailImageAs64Bit().then((thumb) => {\r\n return thumb;\r\n }); */\r\n const { department, description, manager } = values;\r\n let _DepartmentObj = {\r\n departmentID: this.state.departmentID,\r\n name: department,\r\n description: description,\r\n thumbnail: this.state.thumbnail,\r\n manager: 'None',\r\n //getDepartmentGISAssets: this.__get__department__assets(),\r\n };\r\n //console.log(_DepartmentObj);\r\n CrudOperations.Update(Entity, _DepartmentObj)\r\n .then((res) => {\r\n this.__getDepartments();\r\n this.toggleExistingDepartmentModal();\r\n this.setState({ selectedAssets: [] });\r\n swal(`Department ${_DepartmentObj.name} updated successfully.`);\r\n })\r\n .catch((err) => {\r\n swal('Unable to update department at this time');\r\n console.log('Error updating department :: ', err);\r\n });\r\n };\r\n\r\n handleNewDepartment = async (event, values) => {\r\n /* var _thumbnail = await this.__GetThumbnailImageAs64Bit().then((thumb) => {\r\n return thumb;\r\n }); */\r\n const { department, description, manager } = values;\r\n let NewDepartmentObj = {\r\n name: department,\r\n description: description,\r\n thumbnail: this.state.thumbnail,\r\n //\"totalMembers\": 0,\r\n manager: 'None',\r\n //getDepartmentGISAssets: this.__get__new__department__assets(),\r\n };\r\n\r\n CrudOperations.Create(Entity, NewDepartmentObj)\r\n .then((res) => {\r\n this.__getDepartments();\r\n this.toggleNewDepartmentModal();\r\n this.setState({ selectedAssets: [] });\r\n swal('Department created successfully!');\r\n })\r\n .catch((err) => {\r\n swal('Something went wrong!');\r\n console.log('Error :: ', err);\r\n });\r\n };\r\n\r\n // validate emails\r\n /**\r\n *\r\n * @param {*} emails // string of emails comma separated\r\n */\r\n __validateEmails = (emails) => {\r\n const errors = [];\r\n const emailsArray = emails.split(',');\r\n if (emailsArray.length > 0) {\r\n emailsArray.map((email, idx) => {\r\n if (this.validateEmail(email.trim())) {\r\n } else {\r\n errors.push(email.trim());\r\n }\r\n });\r\n } else {\r\n if (this.validateEmail(emails.trim())) {\r\n } else {\r\n errors.push(emails);\r\n }\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n validateEmail(email) {\r\n var 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 const isValid = re.test(String(email).toLowerCase());\r\n //console.log(isValid);\r\n return isValid;\r\n }\r\n\r\n __getEmailNotificationReceivers = (emails) => {\r\n const emailsObj = [];\r\n const emailArray = emails.split(',');\r\n if (emailArray.length > 0) {\r\n emailArray.map((email, idx) => {\r\n emailsObj.push({ email: email.trim() });\r\n });\r\n } else {\r\n emailsObj.push({ email: emails.trim() });\r\n }\r\n return emailsObj;\r\n };\r\n\r\n handleInviteMembers = async (evt, values) => {\r\n const { emails } = values;\r\n // check emails validation\r\n const emailErrors = this.__validateEmails(emails);\r\n if (emailErrors.length > 0) {\r\n let message = `Please provide valid email address for: \\n`;\r\n emailErrors.map((email, idx) => {\r\n message = message + `${idx + 1}. ${email} \\n`;\r\n });\r\n swal(message);\r\n return;\r\n }\r\n\r\n this.setState({ isInvitingMember: true });\r\n\r\n const _manager = this.state.GISUsers.find(\r\n (u) => u.id === this.state.loggedInUser.id\r\n );\r\n\r\n const inviteMembersObj = {\r\n invitationSenderFullName: `${_manager.firstName} ${_manager.lastName}`,\r\n invitationSenderEmail: _manager.email,\r\n appBaseUrl: window.location.origin,\r\n emailReceivers: this.__getEmailNotificationReceivers(emails),\r\n departmentName: this.state.selectedDepartment.name,\r\n };\r\n const { data } = await CrudOperations.Post(\r\n 'Notifications/InviteMember',\r\n inviteMembersObj\r\n );\r\n //console.log(data);\r\n this.setState({ isInvitingMember: false });\r\n if (data.isNotificationSent) {\r\n swal(data.message);\r\n this.toggleInviteMembersModal();\r\n } else {\r\n swal(\r\n 'There was an error sending the notification. Please try again later'\r\n );\r\n console.log('Error inviting members :: ', data.message);\r\n }\r\n };\r\n\r\n updateThumbnail = (field, files) => {\r\n const selectedThumbnail = files[0];\r\n\r\n const FR = new FileReader();\r\n FR.onload = (e) => {\r\n this.setState({ thumbnail: e.target.result });\r\n };\r\n FR.readAsDataURL(selectedThumbnail);\r\n /* const state = { ...this.state.state };\r\n state[field] = fieldValue;\r\n this.setState(state); */\r\n };\r\n\r\n _renderUsersOptions = () => {\r\n return (\r\n \r\n {this.state.GISUsers.map((u, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n __renderDepartmentMembers() {\r\n if (this.state.selectedDepartmentMembers.length > 0) {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {' '}\r\n No Members: \r\n This department has no members at this time\r\n \r\n );\r\n }\r\n }\r\n\r\n __renderDepartmentAssets(department) {\r\n const __departmentServices = department.getDepartmentGISAssets;\r\n if (__departmentServices.length > 0) {\r\n return (\r\n <>\r\n {__departmentServices.map((ds, idx) => (\r\n
  • \r\n \r\n {ds.gisService.name}\r\n \r\n
  • \r\n ))}\r\n \r\n );\r\n } else {\r\n return (\r\n
  • \r\n \r\n No Assets assigned\r\n \r\n
  • \r\n );\r\n }\r\n }\r\n\r\n __renderDepartments() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n {this.state.departments.map((dept, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n this.EditDepartment(dept)}\r\n >\r\n \r\n
    \r\n \r\n Edit\r\n \r\n\r\n {/* \r\n \r\n \r\n \r\n\r\n \r\n this.EditDepartment(dept)}\r\n >\r\n Edit\r\n \r\n this.DeleteDepartment(dept)}\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 {dept.name}\r\n \r\n

    \r\n

    \r\n {dept.description}\r\n {/* \r\n view more\r\n */}\r\n

    \r\n this.ShowInviteMembersModel(dept)}\r\n >\r\n Invite Members\r\n \r\n\r\n

    \r\n \r\n \r\n {dept.openTasks} Task\r\n {dept.openTasks > 1 ? 's' : ''}\r\n \r\n \r\n \r\n {dept.totalMembers} Member\r\n {dept.totalMembers > 1 ? 's' : ''}\r\n \r\n

    \r\n \r\n
    \r\n
      \r\n {this.__renderDepartmentAssets(dept)}\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
    \r\n
    \r\n \r\n \r\n Create Department\r\n \r\n
    {this.__renderDepartments()}
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Create New Department\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n {this._renderUsersOptions()}\r\n \r\n */}\r\n \r\n {/* \r\n \r\n \r\n this.__handleAssetSelectionChange(evt)}\r\n >\r\n \r\n */}\r\n\r\n \r\n\r\n \r\n \r\n

    \r\n Recommended thumbnail size 800x400 (px).\r\n

    \r\n {\r\n this.updateThumbnail('departmentThumbnail', files);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Department\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n {this._renderUsersOptions()}\r\n \r\n */}\r\n \r\n\r\n
    {this.__renderDepartmentMembers()}
    \r\n\r\n {/* \r\n \r\n \r\n this.__handleAssetSelectionChange(evt)}\r\n >\r\n \r\n */}\r\n\r\n \r\n\r\n \r\n \r\n

    \r\n Recommended thumbnail size 800x400 (px).\r\n

    \r\n {\r\n this.updateThumbnail('departmentThumbnail', files);\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {/** Invite Users */}\r\n \r\n \r\n Invite Members to {this.state.selectedDepartment?.name}\r\n \r\n \r\n \r\n \r\n \r\n Separate emails with a comma.\r\n \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {this.state.isInvitingMember && (\r\n \r\n \r\n   Inviting...\r\n \r\n )}\r\n {!this.state.isInvitingMember && (\r\n \r\n Invite\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\nexport default DepartmentManagement;\r\n","import React from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\n\r\nconst MunicipalityContactInfo = ({ municipalityInfo }) => {\r\n const { address, city, state, zipCode, phone, logoUrl } = municipalityInfo;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {address}, {city}, {state} {zipCode}\r\n
    \r\n P: {phone}\r\n
    \r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default MunicipalityContactInfo\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n FormGroup, Input, Label\r\n} from 'reactstrap';\r\nimport { workorderService } from '../../../services/workorder.service';\r\n\r\nconst TopLayerSelector = ({ \r\n layers, \r\n onSelectionChangeSave, \r\n isDisabled, \r\n selectedOption,\r\n userSettings,\r\n userID\r\n}) => {\r\n\r\nconst [selectedLayerID, setSelectedLayerID] = useState();\r\n\r\nconst __setSelectionChange = (val) => {\r\n setSelectedLayerID(val);\r\n onSelectionChangeSave(val);\r\n}\r\n\r\nconst __saveMyTopLayerChoice = async() => {\r\n //console.log(selectedLayerID);\r\n let __settingsObj;\r\n if(userSettings === null) {\r\n __settingsObj = {\r\n userID,\r\n themeName: \"LEFT_SIDEBAR_THEME_DARK\",\r\n notificationType: \"Email\",\r\n mostTopLayerID: parseInt(selectedLayerID)\r\n };\r\n }\r\n else {\r\n __settingsObj = userSettings;\r\n __settingsObj.mostTopLayerID = parseInt(selectedLayerID)\r\n }\r\n\r\n await workorderService.SaveUserSettings(__settingsObj);\r\n}\r\n\r\nuseEffect(() => { \r\n //console.log(userSettings);\r\n if(userSettings === null) {\r\n setSelectedLayerID(selectedOption);\r\n } else {\r\n setSelectedLayerID(userSettings.mostTopLayerID);\r\n }\r\n}, [])\r\n\r\n return (\r\n
    \r\n \r\n \r\n __setSelectionChange(e.target.value)}\r\n disabled={isDisabled}\r\n >\r\n {\r\n layers && (\r\n <>\r\n {\r\n layers.map((l, idx) => (\r\n \r\n ))\r\n }\r\n \r\n )\r\n }\r\n \r\n \r\n\r\n
    \r\n __saveMyTopLayerChoice()}\r\n disabled={isDisabled}\r\n >\r\n Save my choice\r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default TopLayerSelector;\r\n","import React, { Component, Fragment } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { CustomInput, UncontrolledCollapse } from 'reactstrap';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport Spinner from '../Spinner';\r\nimport TopLayerSelector from '../utils/TopLayerSelector/TopLayerSelector';\r\n\r\nclass UtilityToggler extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n isLoading: true,\r\n Water: 'Water',\r\n Storm: 'Storm',\r\n Sanitary: 'Sanitary',\r\n Electric: 'Electric',\r\n Telecommunication: 'Telecommunication',\r\n User: null,\r\n departments: [],\r\n userServices: [],\r\n userTopService: null,\r\n userSettings: null,\r\n };\r\n }\r\n componentDidMount() {\r\n this.__setUserServices();\r\n setTimeout(() => {\r\n CrudOperations.GetByID('UserSettings', this.props.user.id).then(\r\n async (res) => {\r\n // console.log(res);\r\n let __assets = [];\r\n if (res.data === '' || res.data === null) {\r\n //\r\n if (this.state.userServices.length > 0) {\r\n this.setState({\r\n userTopService: this.state.userServices[0],\r\n userSettings: null,\r\n isLoading: false,\r\n });\r\n } else {\r\n // get services from department for Supervisor and all for Manager\r\n const userType = workorderService.GetUserRole();\r\n //console.log(userType);\r\n switch (userType) {\r\n case 'manager':\r\n // load assets for department\r\n __assets = this.props.WOCAssets;\r\n break;\r\n case 'supervisor':\r\n // load assets for department\r\n break;\r\n case 'field':\r\n // load assets for user\r\n /* console.log(this.props.WOCAssets);\r\n __assets = this.props.WOCAssets.filter((a) =>\r\n a.gisServicesUsersConfigurations.filter(\r\n (s) => s.userID === this.props.user.id\r\n )\r\n );\r\n console.log(__assets); */\r\n break;\r\n }\r\n if (__assets.length > 0) {\r\n //console.log('Alright... :: ', this.props.WOCAssets);\r\n this.setState({\r\n userTopService: __assets[0],\r\n userServices: __assets,\r\n userSettings: null,\r\n isLoading: false,\r\n });\r\n }\r\n //console.log(this.props.user);\r\n setTimeout(() => {\r\n this.__setUserServices();\r\n }, 100);\r\n }\r\n } else {\r\n //console.log(this.state.userServices);\r\n if (this.state.userServices.length > 0) {\r\n const selectedService = this.state.userServices.find(\r\n (s) =>\r\n s.gisServicesConfigurationID ===\r\n parseInt(res.data.mostTopLayerID)\r\n );\r\n this.setState({\r\n userTopService: selectedService\r\n ? selectedService\r\n : this.state.userServices[0],\r\n userSettings: res.data,\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n this.setState({ isLoading: false });\r\n }\r\n );\r\n }, 200);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n onSelectionChangeSave = (id) => {\r\n const { userTopService, userServices } = this.state;\r\n const selectedService = userServices.find(\r\n (s) => s.gisServicesConfigurationID === parseInt(id)\r\n );\r\n this.setState({ userTopService: selectedService });\r\n //this.__renderLayersToggler();\r\n };\r\n\r\n __setUserServices = () => {\r\n const { userServices } = this.state;\r\n this.props.WOCAssets.map((s) => {\r\n if (s.gisServicesUsersConfigurations.length > 0) {\r\n const _user_services = s.gisServicesUsersConfigurations.find(\r\n (c) => c.userID === this.props.user.id\r\n );\r\n if (_user_services) {\r\n userServices.push(s);\r\n }\r\n }\r\n });\r\n setTimeout(() => {\r\n //console.log(userServices);\r\n this.setState({\r\n userServices,\r\n isLoading: false,\r\n });\r\n\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('topAssetSelector')\r\n );\r\n }, 500);\r\n };\r\n\r\n __renderLayersToggler() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n
    \r\n {this.__render_user_choice_topLayer()}\r\n {this.__renderOtherLayers()}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n __toggleLayerVisibility = (layerName, isChecked) => {\r\n const __layerId = layerName.replace(/ +/g, '');\r\n const mapview = this.props.mapview;\r\n const layer = mapview.map.layers.items.filter((l) => {\r\n return l.id === __layerId.toLowerCase().trim();\r\n });\r\n /// layer root visibility\r\n layer[0].visible = isChecked;\r\n layer[0].sublayers.items.map((subL) => {\r\n subL.visible = isChecked;\r\n });\r\n };\r\n\r\n __render_user_choice_topLayer() {\r\n if (this.state.userServices.length > 0) {\r\n return (\r\n \r\n this.__toggleLayerVisibility(\r\n this.state.userTopService.name,\r\n e.target.checked\r\n )\r\n }\r\n />\r\n );\r\n }\r\n }\r\n __renderOtherLayers() {\r\n if (this.props.WOCAssets.length > 0) {\r\n var OtherLayers = this.props.WOCAssets;\r\n if (this.state.userTopService) {\r\n OtherLayers = OtherLayers.filter(\r\n (l) =>\r\n l.gisServicesConfigurationID !==\r\n this.state.userTopService.gisServicesConfigurationID\r\n );\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {this.state.userServices.length > 0 ? 'More ' : 'Layers '}\r\n \r\n \r\n \r\n \r\n \r\n {OtherLayers.map((s, idx) => (\r\n \r\n this.__toggleLayerVisibility(s.name, e.target.checked)\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.__renderLayersToggler()}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default UtilityToggler;\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { Card, CardBody, Col, Row } from 'reactstrap';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport MunicipalityContactInfo from '../../Shared/MunicipalityContactInfo';\r\nimport Spinner from '../../Spinner';\r\nimport UtilityToggler from '../UtilityToggler';\r\nimport './print-page.css';\r\n\r\nclass PrintWorkOrder extends Component { /* completed at 589 */\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: true,\r\n AssignedUser: null,\r\n WorkOrderFeature: null,\r\n GISAssets: [],\r\n GISResources: [],\r\n workOrderQuestionAnswers: [],\r\n// workOrderProblemResolutions: [], //removed when changed from multi to single storage\r\n workorders: [],\r\n mapview: null,\r\n User: null,\r\n userType: '',\r\n WOCAssets: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ User: this.props.user });\r\n this.initWorkOrderPrint();\r\n }\r\n\r\n initWorkOrderPrint = () => { /* completed at 120 */\r\n const _globalID = this.props.match.params.globalid;\r\n //console.log(_globalID);\r\n workorderService\r\n .SelectFeatureByGlobalID(_globalID)\r\n .then((featureResult) => {\r\n workorderService\r\n .GetManagedOrderDetails(_globalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n this.setState({ isLoading: false });\r\n } else {\r\n const {\r\n gisAssets,\r\n workOrderResources,\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, //removed when changed from multi to single storage\r\n assignedToUID,\r\n } = results.data;\r\n if (featureResult.features.length > 0) {\r\n // get assigned to work\r\n if (assignedToUID) {\r\n UserAPI.GetUser(assignedToUID).then((user) => {\r\n this.setState({\r\n AssignedUser: user.data,\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n WorkOrderFeature: featureResult.features[0],\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, //removed when changed from multi to single storage\r\n workorders: featureResult.features,\r\n isLoading: false,\r\n });\r\n });\r\n } else {\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n WorkOrderFeature: featureResult.features[0],\r\n workorders: featureResult.features,\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, // removed when changed from multi to single storage\r\n isLoading: false,\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.initMapView(); /* only call to initMapView */\r\n }, 500);\r\n } else {\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n workorders: [],\r\n isLoading: false,\r\n });\r\n }\r\n } /* end of initial Else */\r\n })\r\n .catch((error) =>\r\n console.log(`Error fetching order details :: ${error}`)\r\n );\r\n })\r\n .catch((err) => {\r\n console.log(`Error featching feature from GIS Server :: `, err);\r\n });\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }; /* initWorkOrderPrint */\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n initMapView = () => { /* called only from initWorkOrderPrint - completed @ #216 */\r\n loadModules([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/Graphic',\r\n ]).then(async ([Map, MapView, GraphicsLayer, Graphic]) => {\r\n const selectedWorkGLayer = new GraphicsLayer({\r\n id: 'selectedWorkGLayer',\r\n title: 'Selected Work',\r\n listMode: 'hide',\r\n });\r\n const selectedWorkTextGLayer = new GraphicsLayer({\r\n id: 'selectedWorkTextGLayer',\r\n title: 'Text ID',\r\n listMode: 'hide',\r\n });\r\n const map = new Map({\r\n basemap: `${this.props.config.ESRImaps.id_base}`, //'topo-vector', 'streets-night-vector', was 'topo' which has been deprecated CHANGED 12/13/2022 DMM\r\n layers: [selectedWorkGLayer, selectedWorkTextGLayer],\r\n });\r\n\r\n{/* // add utility Layer\r\n const woc__assets = await workorderService.__addGISAssetsToMap(\r\n map,\r\n this.state.User\r\n ); */}\r\n\r\n const { center, zoom } = this.props.config.mapConfig;\r\n const view = new MapView({\r\n container: 'viewDiv',\r\n map: map,\r\n zoom,\r\n center, // longitude, latitude\r\n });\r\n view.ui.move(['zoom'], 'bottom-right');\r\n// view.ui.add(['utilityTogglerDiv'], 'top-left'); //\r\n\r\n setTimeout(() => {\r\n this.setState({ mapview: view });\r\n }, 50);\r\n\r\n view.when(() => {\r\n // add selected work\r\n let marker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url: `${this.props.config.ESRImaps.printmarker}`, //'https://static.arcgis.com/images/Symbols/Shapes/BlackStarLargeB.png', //'https://demogis.emht.com/assets/images/markers/BlackStarLargeB.png'\r\n width: '44px',\r\n height: '44px',\r\n };\r\n\r\n this.state.workorders.map((f) => {\r\n selectedWorkGLayer.add(new Graphic(f.geometry, marker, f.attributes));\r\n\r\n var textSym = {\r\n type: 'text',\r\n text: f.attributes.WOID,\r\n font: { size: 13, weight: 'bold' },\r\n yoffset: 10,\r\n color: [61, 4, 149, 1],\r\n };\r\n selectedWorkTextGLayer.add(new Graphic(f.geometry, textSym));\r\n });\r\n\r\n //console.log(selectedWorkGLayer);\r\n\r\n const { geometry } = this.state.WorkOrderFeature;\r\n if (geometry) {\r\n view.center = geometry;\r\n view.zoom = 16;\r\n }\r\n });\r\n /* setTimeout(() => {\r\n const { geometry } = this.state.WorkOrderFeature;\r\n if (geometry) {\r\n view.center = geometry;\r\n view.zoom = 16;\r\n }\r\n }, 200); */\r\n });\r\n }; /* end of initMapView from #130 */\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { attributes } = this.state.WorkOrderFeature;\r\n if (attributes) {\r\n switch (attributes.Status.toLowerCase()) {\r\n case 'yellow':\r\n return 'Assigned';\r\n break;\r\n case 'red':\r\n return 'Unassigned';\r\n break;\r\n case 'green':\r\n return 'Completed';\r\n break;\r\n case 'grey':\r\n return 'Associated to mine';\r\n break;\r\n }\r\n }\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n renderStatus(status) {\r\n return workorderService.renderStatus(status);\r\n }\r\n\r\n __renderEssentialQuestion() {\r\n if (this.state.workOrderQuestionAnswers.length > 0) {\r\n return (\r\n
    \r\n
    \r\n
    Essential Details
    \r\n
      \r\n {this.state.workOrderQuestionAnswers.map((q, index) => (\r\n
    1. \r\n
      \r\n

      \r\n {q.essentialQuestion.question}\r\n

      \r\n \r\n {q.answer}\r\n

      \r\n
      \r\n
    2. \r\n ))}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n __renderPrinting() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n if (this.state.WorkOrderFeature) {\r\n const { attributes } = this.state.WorkOrderFeature;\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 Work Order - {attributes.WOID}\r\n

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

    \r\n Created by: {attributes.OriginatorID}\r\n

    \r\n

    \r\n Asset: {attributes.AssetName}\r\n

    \r\n

    \r\n Work Type: {attributes.WorkType}\r\n

    \r\n

    \r\n Description: {attributes.Description}\r\n

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

    \r\n Due Date:    {' '}\r\n \r\n {new Date(\r\n attributes.PlannedDate\r\n ).toISOString().substr(0, 10)}\r\n \r\n

    \r\n

    \r\n Order Status: {' '}\r\n \r\n {this.renderStatus(attributes.Status)}\r\n \r\n

    \r\n {attributes.Status === 'Completed' && (\r\n

    \r\n Date Completed: {' '}\r\n \r\n \r\n {new Date(\r\n attributes.DateCompleted\r\n ).toLocaleDateString()}\r\n \r\n {' '}\r\n

    \r\n )}\r\n

    \r\n WO ID: {' '}\r\n \r\n #{attributes.WOID}\r\n \r\n

    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    Location
    \r\n
    \r\n {attributes.LocationAddress}\r\n
    \r\n Work Assigned to:\r\n
    \r\n {attributes.AssignedToID}\r\n
    \r\n {this.state.AssignedUser\r\n ? this.state.AssignedUser.email\r\n : ''}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    GIS Assets
    \r\n {this.state.GISAssets.length === 0 &&

    None

    }\r\n
      \r\n {this.state.GISAssets.map((a, index) => (\r\n
    • \r\n {a.assetName} - {a.facilityID}\r\n
    • \r\n ))}\r\n
    \r\n
    \r\n \r\n \r\n \r\n{/*
    \r\n {this.state.WOCAssets.length > 0 && ( \r\n \r\n )}\r\n
    */}\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.GISResources.map((item, idx) => {\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
    #ResourceQuantityUnit CostTotal
    {idx + 1}\r\n{/* {item.resource.name} */}\r\n {item.name}\r\n {item.unit}{item.resource.rate}{item.rate}\r\n {GlobalFormatter.FormatUSD(\r\n item.unit * item.rate // Changed from item.resource.rate \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    Field Notes:
    \r\n \r\n {attributes.FieldNotes === '' ||\r\n attributes.FieldNotes === null\r\n ? 'No field note provided at this time'\r\n : attributes.FieldNotes}\r\n \r\n
    \r\n \r\n \r\n
    \r\n

    {this.__getResourcesTotalCost()}

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

    \r\n Problem: \r\n {attributes.ProblemName === '' ||\r\n attributes.ProblemName === null\r\n ? '(No Problem chosen)'\r\n : attributes.ProblemName}\r\n \r\n

    \r\n

    \r\n Resolution: \r\n {attributes.ResolutionName === '' ||\r\n attributes.ResolutionName === null\r\n ? '(No Resolution chosen)'\r\n : attributes.ResolutionName}\r\n \r\n

    \r\n
    \r\n \r\n\r\n \r\n
    {this.__renderEssentialQuestion()}
    \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n window.print();\r\n }}\r\n >\r\n Print\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 No Work Order found\r\n

    \r\n

    \r\n There is no work order associate with given id.\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.__renderPrinting()}\r\n \r\n );\r\n }\r\n} /* PrintWorkOrder component @ #017 */\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(PrintWorkOrder);\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport {\r\n CrudOperations,\r\n GlobalFormatter,\r\n} from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'Resources';\r\n\r\nclass ResourcesManagement extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n resources: [],\r\n departments: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n type: '',\r\n description: '',\r\n rate: 0,\r\n resourceID: 0,\r\n departmentID: 0,\r\n GISAssets: [],\r\n assetsOptions: [],\r\n selectedAsset: 0,\r\n selectedResource: null,\r\n currentLevel:0,\r\n criticalLevel: 0,\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n __getGISAssets = async (department) => {\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n var __gis__assets = data;\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === department.departmentID\r\n );\r\n }\r\n //console.log(__gis__assets);\r\n this.setState({ GISAssets: __gis__assets });\r\n };\r\n\r\n __setAssetsOptions = () => {\r\n const { assetsOptions } = this.state;\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.setState({ assetsOptions });\r\n }, 20);\r\n };\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n const loggedUser = getLoggedInUser();\r\n CrudOperations.Get('Departments').then((res) => {\r\n const department = res.data.find((d) => d.name === loggedUser.department);\r\n\r\n this.__getGISAssets(department);\r\n\r\n this.setState({\r\n departments: res.data,\r\n Department: department.name,\r\n departmentID: department.departmentID,\r\n });\r\n setTimeout(() => {\r\n this.__getResources();\r\n }, 50);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getResources = () => {\r\n const user_role = workorderService.GetUserRole();\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n var __resources = res.data;\r\n if (user_role === 'supervisor') {\r\n __resources = __resources.filter(\r\n (r) =>\r\n r.resourceAsset.getGISService.departmentID ===\r\n this.state.departmentID\r\n );\r\n }\r\n //console.log(__resources);\r\n this.__setResources(__resources);\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching resources for manager :: ', err);\r\n });\r\n };\r\n\r\n __setResources = (resources) => {\r\n let newResources = [];\r\n resources.map((r) => {\r\n const { name, rate, resourceID, type, resourceAsset, currentLevel, criticalLevel } = r;\r\n newResources.push({\r\n name,\r\n rate,\r\n resourceID,\r\n type,\r\n resourceAsset,\r\n currentLevel,\r\n criticalLevel,\r\n });\r\n });\r\n this.setState({ resources: newResources, isLoading: false });\r\n };\r\n\r\n newModel = () => {\r\n this.setState({\r\n newModal: true,\r\n });\r\n };\r\n\r\n EditResource = (resObj) => {\r\n const { resourceID, resourceAsset, name, type, rate, currentLevel, criticalLevel } = resObj;\r\n // console.log(resourceAsset);\r\n this.setState({\r\n resourceID,\r\n //departmentID: 0,\r\n name,\r\n type,\r\n rate,\r\n currentLevel,\r\n criticalLevel,\r\n selectedAsset: resourceAsset.gisServicesConfigurationID,\r\n selectedResource: resObj,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n DeleteResource = (resObj) => {\r\n swal({\r\n text: `You are about to delete Resource [${resObj.name}]. Please note if this Resource has been linked to a work order, it will not be deleted. Are you sure to delete?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n CrudOperations.VerifyItemUsedForDeletion(\r\n resObj.resourceID,\r\n 'resources'\r\n ).then((result) => {\r\n if (result.data) {\r\n swal(\r\n `Resource [${resObj.name}] has been assigned to work order and cannot be deleted.`\r\n );\r\n } else {\r\n CrudOperations.Delete(Entity, resObj.resourceID)\r\n .then((res) => {\r\n this.__getResources(this.state.departmentID);\r\n swal(`Resource [${resObj.name}] deleted successfully.`);\r\n })\r\n .catch((err) => {\r\n swal(\r\n `Unable to delete Resource [${resObj.name}]. Unexpected result.`\r\n );\r\n console.log('Error :: ', err);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n handleEdit = (event, values) => {\r\n //console.log(values);\r\n const { name, type, rate, currentLevel, criticalLevel } = values;\r\n\r\n const { resourceAsset } = this.state.selectedResource;\r\n\r\n let _ResourceObj = {\r\n resourceID: resourceAsset.resourceID,\r\n name,\r\n type,\r\n rate,\r\n currentLevel,\r\n criticalLevel,\r\n resourceAsset,\r\n };\r\n CrudOperations.Update(Entity, _ResourceObj)\r\n .then((res) => {\r\n this.__getResources();\r\n this.toggleExistingModal();\r\n swal(`Resource ${name} updated successfully.`);\r\n })\r\n .catch((err) => {\r\n swal('Unable to update resource at this time');\r\n console.log('Error updating resource :: ', err);\r\n });\r\n };\r\n\r\n handleNew = (event, values) => {\r\n //console.log(values);\r\n const { assetID, name, type, rate, currentLevel, criticalLevel } = values;\r\n let NewResourceObj = {\r\n name,\r\n type,\r\n rate,\r\n currentLevel,\r\n criticalLevel,\r\n resourceAsset: {\r\n gisServicesConfigurationID: assetID,\r\n },\r\n };\r\n\r\n CrudOperations.Create(Entity, NewResourceObj)\r\n .then((res) => {\r\n if (res.data) {\r\n this.__getResources();\r\n this.toggleNewModal();\r\n swal('Resource created successfully!');\r\n } else {\r\n swal(\r\n `This resource is being already used in the system and cannot be deleted`\r\n );\r\n }\r\n })\r\n .catch((err) => {\r\n swal('Something went wrong!');\r\n console.log('Error :: ', err);\r\n });\r\n };\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n __getDepartmentName = (departmentID) => {\r\n const dept = this.state.departments.find(\r\n (d) => d.departmentID === departmentID\r\n );\r\n return dept.name;\r\n };\r\n\r\n departmentFormatter = (resourceID, resourceObj) => {\r\n return this.__getDepartmentName(resourceObj.departmentID);\r\n };\r\n \r\n editsFormatter = (resourceID, resourceObj) => {\r\n return (\r\n
    \r\n this.EditResource(resourceObj)}>\r\n Edit\r\n \r\n this.DeleteResource(resourceObj)}\r\n >\r\n Delete\r\n \r\n
    \r\n );\r\n };\r\n\r\n __renderResources() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'name',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'resourceID',\r\n text: '',\r\n formatter: this.editsFormatter,\r\n },\r\n {\r\n dataField: 'name',\r\n text: 'Resource',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'type',\r\n text: 'Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'resourceAsset.getGISService.name',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'rate',\r\n text: 'Rate',\r\n sort: true,\r\n formatter: (cell) => {\r\n return GlobalFormatter.FormatUSD(cell);\r\n },\r\n },\r\n {\r\n dataField: 'currentLevel',\r\n text: 'Current Level',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'criticalLevel',\r\n text: 'Critical Level',\r\n sort: true,\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n {/*

    \r\n Department: {this.state.Department}\r\n

    */}\r\n

    \r\n Filter or export resources data in CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\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 Create Resource\r\n \r\n
    {this.__renderResources()}
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Create New Resource\r\n \r\n \r\n \r\n \r\n \r\n {this.state.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \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._renderDepartmentOptions()}\r\n */}\r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n * - Keep at '-1' to ignore inventory tracking\r\n \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Resource\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\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.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n The Asset cannot be changed.\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n The Resource type cannot be changed.\r\n \r\n\r\n
    \r\n \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\nexport default ResourcesManagement;\r\n","import {\r\n AvFeedback,\r\n AvField,\r\n AvForm,\r\n AvGroup,\r\n AvInput,\r\n} from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n InputGroupAddon,\r\n Label,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'Services';\r\n\r\nclass ServicesManagement extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n services: [],\r\n departments: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n workServiceID: 0,\r\n Department: '',\r\n departmentID: 0,\r\n essentialQuestions: [],\r\n GISAssets: [],\r\n assetsOptions: [],\r\n selectedAsset: 0,\r\n selectedAssetObj: null,\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n __getGISAssets = async (department) => {\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n var __gis__assets = data;\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === department.departmentID\r\n );\r\n }\r\n //console.log(__gis__assets);\r\n this.setState({ GISAssets: __gis__assets });\r\n };\r\n\r\n __setAssetsOptions = () => {\r\n const { assetsOptions } = this.state;\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.setState({ assetsOptions });\r\n }, 20);\r\n };\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n \r\n const loggedUser = getLoggedInUser();\r\n\r\n CrudOperations.Get('Departments').then((res) => {\r\n const userDepartment = res.data.find(\r\n (d) => d.name === loggedUser.department\r\n );\r\n\r\n this.__getGISAssets(userDepartment);\r\n\r\n this.setState({\r\n departments: res.data,\r\n Department: userDepartment.name,\r\n departmentID: userDepartment.departmentID,\r\n });\r\n setTimeout(() => {\r\n this.__getServices();\r\n }, 50);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getServices = () => {\r\n const user_role = workorderService.GetUserRole();\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n var __services = res.data;\r\n if (user_role === 'supervisor') {\r\n __services = __services.filter(\r\n (s) =>\r\n s.gisService.getGISService.departmentID ===\r\n this.state.departmentID\r\n );\r\n }\r\n //console.log(__services);\r\n this.setState({ services: __services, isLoading: false });\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching services :: ', err);\r\n this.setState({ isLoading: false });\r\n });\r\n };\r\n\r\n updateResourcesArrayWithDepartmentName = (servicesArray) => {\r\n let services = [];\r\n servicesArray.map((s) => {\r\n const {\r\n departmentID,\r\n name,\r\n workServiceID,\r\n description,\r\n essentialQuestions,\r\n } = s;\r\n services.push({\r\n departmentID,\r\n name,\r\n workServiceID,\r\n description,\r\n department: this.__getDepartmentName(departmentID), //maybe here\r\n essentialQuestions,\r\n });\r\n });\r\n this.setState({ services, isLoading: false });\r\n };\r\n\r\n newModel = () => {\r\n this.setState({\r\n essentialQuestions: [],\r\n newModal: true,\r\n });\r\n };\r\n\r\n EditService = (resObj) => {\r\n const { workServiceID, name, description, essentialQuestions } = resObj;\r\n this.setState({\r\n workServiceID,\r\n name,\r\n description,\r\n essentialQuestions,\r\n existingModal: true,\r\n selectedAsset: resObj.gisService.gisServicesConfigurationID,\r\n selectedAssetObj: resObj,\r\n });\r\n };\r\n DeleteService = (servObj) => {\r\n swal({\r\n text: `You are about to delete Service [${servObj.name}]. Please note if this Service has been linked to a work order, it will not be deleted. Are you sure to delete? `,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n CrudOperations.VerifyItemUsedForDeletion(\r\n servObj.workServiceID,\r\n 'services'\r\n ).then((result) => {\r\n if (result.data) {\r\n swal(\r\n `Service [${servObj.name}] has been assigned to work order and cannot be deleted.`\r\n );\r\n } else {\r\n CrudOperations.Delete(Entity, servObj.workServiceID)\r\n .then((res) => {\r\n this.__getServices(this.state.departmentID);\r\n swal(`Service [${servObj.name}] deleted successfully.`);\r\n })\r\n .catch((err) => {\r\n swal(\r\n `Unable to delete Service [${servObj.name}]. Unexpected result.`\r\n );\r\n console.log('Error :: ', err);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n handleEdit = (event, values) => {\r\n const { name, description } = values;\r\n //console.log(this.state.selectedAssetObj);\r\n\r\n let _updatedObj = {\r\n workServiceID: this.state.workServiceID,\r\n departmentID:\r\n this.state.selectedAssetObj.gisService.getGISService.departmentID,\r\n name,\r\n description,\r\n gisService: this.state.selectedAssetObj.gisService,\r\n essentialQuestions: this.__getEssentialQuestions(values),\r\n };\r\n\r\n //console.log(_updatedObj);\r\n\r\n CrudOperations.Update(Entity, _updatedObj)\r\n .then((res) => {\r\n this.__getServices(this.state.departmentID);\r\n this.toggleExistingModal();\r\n swal(`Service ${name} updated successfully.`);\r\n })\r\n .catch((err) => {\r\n swal('Unable to update service at this time');\r\n console.log('Error updating resource :: ', err);\r\n });\r\n };\r\n\r\n __getEssentialQuestions = (values) => {\r\n let essentialQuestions = [];\r\n if (this.state.essentialQuestions.length > 0) {\r\n for (\r\n let index = 0;\r\n index < this.state.essentialQuestions.length;\r\n index++\r\n ) {\r\n Object.keys(values).forEach((e) => {\r\n switch (e) {\r\n case `question-${index}`:\r\n // check for prop essentialQuestionID for existing question\r\n if (\r\n this.state.essentialQuestions[index].hasOwnProperty(\r\n 'essentialQuestionID'\r\n )\r\n ) {\r\n const essentialQuestionObj =\r\n this.state.essentialQuestions[index];\r\n essentialQuestions.push({\r\n essentialQuestionID: essentialQuestionObj.essentialQuestionID,\r\n question: values[e],\r\n });\r\n } else {\r\n essentialQuestions.push({\r\n question: values[e],\r\n });\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n return essentialQuestions;\r\n };\r\n\r\n handleNew = (event, values) => {\r\n //console.log(values);\r\n const { assetID, name, description } = values;\r\n let _newService = {\r\n //assetID: parseInt(assetID),\r\n name,\r\n description,\r\n essentialQuestions: this.__getEssentialQuestions(values),\r\n gisService: {\r\n //workTypeAssetID: 0,\r\n //workServiceID: 0,\r\n gisServicesConfigurationID: parseInt(assetID),\r\n },\r\n };\r\n CrudOperations.Create(Entity, _newService)\r\n .then((res) => {\r\n this.__getServices(this.state.departmentID);\r\n this.toggleNewModal();\r\n swal('Service created successfully!');\r\n })\r\n .catch((err) => {\r\n swal('Something went wrong!');\r\n console.log('Error :: ', err);\r\n });\r\n };\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n __getDepartmentName = (departmentID) => {\r\n const dept = this.state.departments.find(\r\n (d) => d.departmentID === departmentID\r\n );\r\n return dept.name;\r\n };\r\n\r\n departmentFormatter = (resourceID, resourceObj) => {\r\n return this.__getDepartmentName(resourceObj.departmentID);\r\n };\r\n editsFormatter = (resourceID, resourceObj) => {\r\n return (\r\n
    \r\n this.EditService(resourceObj)}>\r\n Edit\r\n \r\n this.DeleteService(resourceObj)}\r\n >\r\n Delete\r\n \r\n
    \r\n );\r\n };\r\n\r\n AddNewEssentialQuestion = () => {\r\n const essentialQuestions = this.state.essentialQuestions;\r\n /* const _question = {\r\n question: ''\r\n }; */\r\n essentialQuestions.push(`question-${essentialQuestions.length}`);\r\n this.setState({ essentialQuestions });\r\n };\r\n\r\n RemoveFromAddedQuestions = (index) => {\r\n const essentialQuestions = this.state.essentialQuestions;\r\n essentialQuestions.splice(index, 1);\r\n this.setState({ essentialQuestions });\r\n };\r\n\r\n renderEssentialQuestions() {\r\n return (\r\n \r\n {this.state.essentialQuestions.map((q, index) => (\r\n \r\n \r\n
    \r\n this.RemoveFromAddedQuestions(index)}\r\n >\r\n X\r\n \r\n \r\n Please provide required details.\r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n }\r\n\r\n __renderServices() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'name',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'workServiceID',\r\n text: '',\r\n formatter: this.editsFormatter,\r\n },\r\n {\r\n dataField: 'name',\r\n text: 'Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'gisService.getGISService.name',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'description',\r\n text: 'Description',\r\n sort: false,\r\n },\r\n ];\r\n\r\n const expandRow = {\r\n renderer: (row) => (\r\n
    \r\n
    \r\n Essential Detail{row.essentialQuestions.length > 1 ? 's' : ''}\r\n
    \r\n
      \r\n {row.essentialQuestions.map((e, index) => (\r\n \r\n
      \r\n
      {e.question}
      \r\n
      \r\n {/* 14 */}\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 Department: {this.state.Department}\r\n

    */}\r\n

    \r\n Filter or export services data in CSV format. Click on the row\r\n to view Essential Details if any.\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\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 Create Work Type\r\n \r\n
    {this.__renderServices()}
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Create New Work type\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.renderEssentialQuestions()}\r\n\r\n \r\n Add Essential Detail\r\n \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Work Type\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n The Asset cannot be changed.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.renderEssentialQuestions()}\r\n\r\n \r\n Add Essential Detail\r\n \r\n
    \r\n \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\nexport default ServicesManagement;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport {\r\n Card,\r\n CardBody,\r\n ListGroup,\r\n ListGroupItem,\r\n ListGroupItemHeading,\r\n ListGroupItemText,\r\n} from 'reactstrap';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport {\r\n getLoggedInUser,\r\n isUserInSupervisorRole,\r\n} from '../../../helpers/authUtils';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\nimport './print-page.css';\r\n\r\nclass SrcSearch extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n searchTerm: '',\r\n loggedUser: null,\r\n isUserSupervisor: false,\r\n isLoading: true,\r\n searchResults: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n const isUserSupervisor = isUserInSupervisorRole();\r\n const searchTerm = this.props.match.params.q;\r\n\r\n workorderService.DoSRCSearch(searchTerm).then((res) => {\r\n var departmentResultsFilter = res.data.results;\r\n if (workorderService.GetUserRole() === 'manager') {\r\n } else {\r\n departmentResultsFilter = departmentResultsFilter.filter(\r\n (r) => r.attributes.DepartmentName === loggedUser.department\r\n );\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n loggedUser,\r\n isUserSupervisor,\r\n searchTerm: searchTerm,\r\n searchResults: departmentResultsFilter,\r\n });\r\n });\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 200);\r\n }\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n rnderViewDetail = (attr) => {\r\n // manager\r\n if (workorderService.GetUserRole() === 'manager') {\r\n switch (attr.Status) {\r\n case 'Completed':\r\n break;\r\n default:\r\n return (\r\n \r\n \r\n View Details\r\n \r\n \r\n );\r\n }\r\n }\r\n if (\r\n workorderService.GetUserRole() === 'supervisor' &&\r\n this.state.loggedUser.department === attr.DepartmentName\r\n ) {\r\n switch (attr.Status) {\r\n case 'Completed':\r\n break;\r\n default:\r\n return (\r\n \r\n \r\n View Details\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n // field crew case\r\n if (\r\n workorderService.GetUserRole() === 'field' &&\r\n this.state.loggedUser.department === attr.DepartmentName\r\n ) {\r\n switch (attr.Status) {\r\n case 'Completed':\r\n break;\r\n default:\r\n if (\r\n attr.AssignedToUID === this.state.loggedUser.id ||\r\n attr.Status === 'Unassigned'\r\n ) {\r\n return (\r\n \r\n \r\n View Details\r\n \r\n \r\n );\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n __renderSearchResult() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.searchResults.length) {\r\n case 0:\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n No result found\r\n

    \r\n

    \r\n There are no result found for search term: \"\r\n {this.state.searchTerm}\"\r\n

    \r\n {workorderService.GetUserRole() !== 'manager' && (\r\n

    \r\n Please note search is being perfomed within the{' '}\r\n {this.state.loggedUser.department} department.\r\n

    \r\n )}\r\n
    \r\n );\r\n break;\r\n\r\n default:\r\n return (\r\n \r\n \r\n
    \r\n Showing {this.state.searchResults.length} result\r\n {this.state.searchResults.length > 1 ? 's' : ''}{' '}\r\n {/* (0.45 seconds) */}\r\n for \"{this.state.searchTerm}\"{' '}\r\n {workorderService.GetUserRole() !== 'manager' && (\r\n \r\n within the {this.state.loggedUser.department}{' '}\r\n department\r\n \r\n )}\r\n
    \r\n {/*

    \r\n Add nearly any HTML within, even for linked list groups like\r\n the one below, with the help of flexbox utilities.\r\n

    */}\r\n \r\n {this.state.searchResults.map((r, index) => (\r\n \r\n \r\n {r.attributes['Work Type']} - WOID: {r.attributes.WOID}{' '}\r\n {workorderService.GetUserRole() === 'manager' && (\r\n \r\n in {r.attributes.DepartmentName} department\r\n \r\n )}\r\n \r\n \r\n {r.attributes.Description}\r\n \r\n
    \r\n

    \r\n Work order created on {r.attributes['Date Initiated']}\r\n

    \r\n

    \r\n Created by: {r.attributes.Originator}\r\n

    \r\n

    \r\n Assigned to: {r.attributes['Work Assigned to']}\r\n

    \r\n

    \r\n Location: {r.attributes['Location Address']} |\r\n Field notes:{' '}\r\n \r\n {r.attributes['Field Notes'] === 'Null' ||\r\n r.attributes['Field Notes'] === ''\r\n ? 'N/A'\r\n : r.attributes['Field Notes']}\r\n \r\n

    \r\n
    \r\n Status:{' '}\r\n {workorderService.renderStatus(r.attributes.Status)}{' '}\r\n {r.attributes.Status === 'Completed' ? (\r\n \r\n {' '} Work completed on:{' '}\r\n {r.attributes['Date Completed']}\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n Print\r\n \r\n \r\n {this.rnderViewDetail(r.attributes)}\r\n
    \r\n ))}\r\n
    \r\n
    \r\n
    \r\n );\r\n break;\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {!this.state.isLoading && (\r\n \r\n )}\r\n {this.__renderSearchResult()}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default SrcSearch;\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport InputMask from 'react-input-mask';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n Input,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n Table,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\nimport profileImg from '../../assets/images/users/noprofile.png';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport PageTitle from '../PageTitle';\r\nimport Spinner from '../Spinner';\r\n\r\nclass UserProfile extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n departments: [],\r\n GISServices: [],\r\n UserAssets: [],\r\n isLoading: true,\r\n isUpdatingProfile: false,\r\n user: null,\r\n totalWorkOrders: 0,\r\n activeWorkOrders: 0,\r\n unassignedWorkOrders: 0,\r\n };\r\n this.toggleProfileChangeModal = this.toggleProfileChangeModal.bind(this);\r\n }\r\n\r\n toggleProfileChangeModal = () => {\r\n this.setState((prevState) => ({\r\n modal: !prevState.modal,\r\n }));\r\n };\r\n\r\n fetchGIS_Services = async () => {\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n\r\n const { UserAssets } = this.state;\r\n const loggedUser = getLoggedInUser();\r\n\r\n if (data.length > 0) {\r\n data.map((s, idx) => {\r\n if (s.gisServicesUsersConfigurations.length > 0) {\r\n const __service = s.gisServicesUsersConfigurations.find(\r\n (a) => a.userID === loggedUser.id\r\n );\r\n if (__service) {\r\n UserAssets.push(s);\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n GISServices: data,\r\n UserAssets,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n // get departments\r\n this.fetchGIS_Services();\r\n CrudOperations.Get('Departments').then((res) => {\r\n this.setState({ departments: res.data });\r\n });\r\n // get user info\r\n const loggedUser = getLoggedInUser();\r\n this.getUserInfo(loggedUser.id);\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n getUserInfo = (userID) => {\r\n UserAPI.GetUser(userID)\r\n .then((res) => {\r\n workorderService.GetUserWorkSummary(userID).then((summary) => {\r\n const { totalWorkOrders, activeWorkOrders, unassignedWorkOrders } =\r\n summary.data;\r\n this.setState({\r\n user: res.data,\r\n totalWorkOrders,\r\n activeWorkOrders,\r\n unassignedWorkOrders,\r\n isLoading: false,\r\n });\r\n });\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching user :: ', err);\r\n swal('Error fetching user');\r\n });\r\n };\r\n\r\n __renderUserAssets = () => {\r\n return (\r\n <>\r\n {this.state.UserAssets.map((ds, idx) => (\r\n
  • \r\n {ds.name}\r\n
  • \r\n ))}\r\n \r\n );\r\n };\r\n\r\n renderuserInfo() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.user) {\r\n case null:\r\n return (\r\n
    \r\n \"\"\r\n

    No user found

    \r\n

    There is no user found.

    \r\n
    \r\n );\r\n break;\r\n\r\n default:\r\n return (\r\n \r\n \r\n \r\n {/* User information */}\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    \r\n {this.state.user.firstName}{' '}\r\n {this.state.user.lastName}\r\n

    \r\n

    \r\n {'Positon: '}\r\n {this.state.user.jobTile}\r\n {' | Department: '}\r\n {this.state.user.department}\r\n

    \r\n\r\n
      \r\n
    • \r\n
      \r\n {this.state.totalWorkOrders}\r\n
      \r\n

      \r\n Total Work orders\r\n

      \r\n
    • \r\n
    • \r\n
      \r\n {this.state.activeWorkOrders}\r\n
      \r\n

      \r\n My active Orders\r\n

      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n \r\n Edit\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 \r\n {/* User's seller information */}\r\n \r\n \r\n

    My Information

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

    \r\n Full Name :{' '}\r\n \r\n {this.state.user.firstName}{' '}\r\n {this.state.user.lastName}\r\n \r\n

    \r\n\r\n

    \r\n Mobile :\r\n \r\n {this.state.user.phoneNumber}\r\n \r\n

    \r\n\r\n

    \r\n Email :{' '}\r\n {this.state.user.email}\r\n

    \r\n\r\n

    \r\n Address :{' '}\r\n \r\n {this.state.user.address}\r\n \r\n

    \r\n

    \r\n \r\n {this.state.user.city}, {this.state.user.state}{' '}\r\n {this.state.user.zipCode}\r\n {' '}\r\n

    \r\n\r\n

    \r\n Company :\r\n \r\n {' '}\r\n {this.state.user.company}\r\n \r\n

    \r\n

    \r\n Registered date :{' '}\r\n \r\n {new Date(\r\n this.state.user.creationDate\r\n ).toLocaleDateString()}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Contact information */}\r\n \r\n \r\n
    \r\n

    \r\n {' '}\r\n Call (614) 775-4280 with WOC Questions\r\n

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

    My Assets

    \r\n\r\n
    \r\n\r\n {this.state.UserAssets.length < 1 && (\r\n <>\r\n \r\n {' '}\r\n No GIS Assets - \r\n You do not have any GIS Assets assigned to you at\r\n this time.\r\n \r\n \r\n )}\r\n {this.state.UserAssets.length > 0 && (\r\n <>\r\n
    \r\n
      \r\n {this.__renderUserAssets()}\r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n\r\n \r\n \r\n

    My Roles

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.user.roles.map((role, i) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    Role NameDescription
    {role.name}{role.description}
    \r\n
    \r\n
    \r\n{/* \r\n \r\n

    Notifications

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

    \r\n Mobile phone provider :{' '}\r\n \r\n {this.state.user.mobileProvider}{' '}\r\n \r\n

    \r\n

    \r\n Preference :{' '}\r\n \r\n {this.state.user.preferredContact}{' '}\r\n \r\n

    \r\n
    \r\n
    \r\n
    DMM 6/26/2023 */}\r\n \r\n
    \r\n
    \r\n );\r\n break;\r\n }\r\n }\r\n }\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n updateUserProfile = (event, values) => {\r\n const {\r\n department,\r\n phone,\r\n phoneProvider,\r\n notificationPreference,\r\n address,\r\n } = values;\r\n if (phoneProvider === 'Select') {\r\n swal('Please select your phone line provider');\r\n return;\r\n }\r\n\r\n this.setState({ isUpdatingProfile: true });\r\n\r\n const userProfileUpdateObj = {\r\n userID: this.state.user.id,\r\n mobilePhone: phone,\r\n phoneLineProvider: phoneProvider,\r\n department,\r\n address,\r\n notificationPreference,\r\n };\r\n\r\n UserAPI.UpdateUserProfile(userProfileUpdateObj)\r\n .then((res) => {\r\n swal('Account updated successfully');\r\n this.getUserInfo(this.state.user.id);\r\n this.toggleProfileChangeModal();\r\n })\r\n .catch((err) => {\r\n swal('Error updating your profile. Please try again later');\r\n console.log('Error updating profile... :: ', err);\r\n })\r\n .finally(() => {\r\n this.setState({ isUpdatingProfile: false });\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.renderuserInfo()}\r\n\r\n \r\n \r\n Update Contact info\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this._renderDepartmentOptions()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n{/*} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n DMM 6/26/2023 */}\r\n \r\n \r\n \r\n{/* \r\n \r\n \r\n \r\n \r\n \r\n changed DMM 6/26/2023 */}\r\n \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {this.state.isUpdatingProfile ? 'Submitting...' : 'Update'}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default UserProfile;\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport Select from 'react-select';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n CustomInput,\r\n Label,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\n\r\nclass UsersManagements extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loggedUser: getLoggedInUser(),\r\n users: [],\r\n Department: '',\r\n appRoles: [],\r\n departments: [],\r\n isLoading: true,\r\n isManager: false,\r\n existingModal: false,\r\n selectedUser: {\r\n id: '',\r\n firstname: '',\r\n lastname: '',\r\n email: '',\r\n phone: '',\r\n roles: [],\r\n },\r\n checkboxes: [],\r\n checkedItems: new Map(),\r\n GISAssets: [],\r\n assetsOptions: [],\r\n selectedAssets: [],\r\n selectedDepartment: '',\r\n userWOCRoleID: '',\r\n };\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange = (e) => {\r\n const item = e.target.name;\r\n const isChecked = e.target.checked;\r\n this.setState((prevState) => ({\r\n checkedItems: prevState.checkedItems.set(item, isChecked),\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n\r\n const managerIndex = this.state.loggedUser.roles.findIndex(\r\n (r) => r.id === 'ef05fa07-09f7-4789-8ab6-f89e3c02a8f1'\r\n );\r\n if (managerIndex > -1) {\r\n this.setState({ isManager: true });\r\n this.__getUsers('all');\r\n this.__getDepartments();\r\n this.fetchGIS_Services();\r\n } else {\r\n this.__getUsers(this.state.loggedUser.department);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n this.setState({ departments: res.data });\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n fetchGIS_Services = async () => {\r\n const __gisServices = await CrudOperations.Get('GisConfiguration');\r\n this.setState({\r\n GISAssets: __gisServices.data,\r\n assetsOptions: [],\r\n });\r\n this.__setAssetsOptions();\r\n };\r\n\r\n __setAssetsOptions = () => {\r\n const { assetsOptions } = this.state;\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.setState({ assetsOptions });\r\n }, 20);\r\n };\r\n\r\n EditUser = (userObj) => {\r\n this.setState({ checkedItems: new Map() });\r\n const selectedUser = this.state.selectedUser;\r\n let selectedAssets = [];\r\n\r\n selectedUser.id = userObj.id;\r\n selectedUser.firstname = userObj.firstName;\r\n selectedUser.lastname = userObj.lastName;\r\n selectedUser.email = userObj.email;\r\n selectedUser.phone = userObj.phoneNumber;\r\n selectedUser.roles = userObj.roles;\r\n selectedUser.department = userObj.department;\r\n\r\n this.IsUserInRole(selectedUser.roles);\r\n\r\n // fetch user assets\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((a) => {\r\n if (a.gisServicesUsersConfigurations.length > 0) {\r\n a.gisServicesUsersConfigurations.map((u) => {\r\n switch (u.userID) {\r\n case this.state.selectedUser.id:\r\n selectedAssets.push({\r\n value: a.gisServicesConfigurationID,\r\n label: a.name,\r\n });\r\n break;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n setTimeout(() => {\r\n this.setState({\r\n selectedUser,\r\n selectedAssets,\r\n existingModal: true,\r\n selectedDepartment: selectedUser.department,\r\n });\r\n }, 30);\r\n };\r\n\r\n DeleteUser = (user) => {\r\n swal({\r\n text: `Are you sure to permanently delete the user ${user.firstName} ${user.lastName}?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then(async (action) => {\r\n if (action) {\r\n try {\r\n await UserAPI.DeleteUser('Helpers', user.id);\r\n if (this.state.isManager) {\r\n this.__getUsers('all');\r\n } else {\r\n this.__getUsers(this.state.loggedUser.department);\r\n }\r\n swal(`user deleted successfully`);\r\n } catch (error) {\r\n console.log('**ERROR** :: error deleting user :: ', error);\r\n swal(\r\n `There was an error deleting this user. Please try again later.`\r\n );\r\n }\r\n }\r\n });\r\n };\r\n\r\n __getUsers = (department) => {\r\n UserAPI.GetApplicationRoles()\r\n .then((approles) => {\r\n let __woc_roles = [];\r\n\r\n approles.data.map((r) => {\r\n switch (r.id) {\r\n case 'ef05fa07-09f7-4789-8ab6-f89e3c02a8f1':\r\n __woc_roles.push({ index: 1, role: r });\r\n break;\r\n case '017bf016-611d-4ddd-b5d8-f59a998c31f1':\r\n __woc_roles.push({ index: 2, role: r });\r\n break;\r\n case 'e217ad31-13c9-452e-a800-d2c04215396c':\r\n __woc_roles.push({ index: 3, role: r });\r\n break;\r\n }\r\n });\r\n __woc_roles = __woc_roles.sort(\r\n (a, b) => parseInt(a.index) - parseInt(b.index)\r\n );\r\n\r\n UserAPI.GetUsersByDepartment(department)\r\n .then((res) => {\r\n const __admin_user = res.data.find(\r\n (u) => u.id === '91681766-3787-4875-a9b3-86642fbd037d'\r\n );\r\n res.data = res.data.filter((u) => u.id !== __admin_user.id);\r\n this.setState({\r\n Department: department,\r\n appRoles: __woc_roles,\r\n users: res.data,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) => console.log('Error fetching users :: ', err));\r\n })\r\n .catch((err) => console.log('Error fetching roles :: ', err));\r\n };\r\n\r\n dateFormatter = (id, userObj) => {\r\n return new Date(userObj.creationDate).toLocaleDateString();\r\n };\r\n\r\n editsFormatter = (id, userObj) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n handleGIS_Assets_Users = async () => {\r\n const __bulkAssets = [];\r\n\r\n if (this.state.selectedAssets && this.state.selectedAssets.length > 0) {\r\n for (let index = 0; index < this.state.selectedAssets.length; index++) {\r\n const config = this.state.selectedAssets[index];\r\n const __config__asset = this.state.GISAssets.find(\r\n (a) => a.gisServicesConfigurationID === config.value\r\n );\r\n const __configObj = {\r\n gisServicesConfigurationID:\r\n __config__asset.gisServicesConfigurationID,\r\n name: __config__asset.name,\r\n serviceLink: __config__asset.serviceLink,\r\n departmentID: __config__asset.departmentID,\r\n gisServicesUsersConfigurations: [\r\n {\r\n userID: this.state.selectedUser.id,\r\n gisServicesConfigurationID:\r\n __config__asset.gisServicesConfigurationID,\r\n },\r\n ],\r\n };\r\n\r\n __bulkAssets.push(__configObj);\r\n }\r\n\r\n await CrudOperations.Create(\r\n 'GisConfiguration/AssignUsersAssetsInBulkAsync',\r\n __bulkAssets\r\n );\r\n }\r\n if (__bulkAssets.length === 0) {\r\n // remove user from assets\r\n await CrudOperations.Delete(\r\n 'GisConfiguration/RemoveUserFromAssets',\r\n this.state.selectedUser.id\r\n );\r\n }\r\n };\r\n\r\n handleEdit = async (event, values) => {\r\n await this.handleGIS_Assets_Users();\r\n\r\n this.fetchGIS_Services();\r\n\r\n const __userRolesObj = {\r\n UserID: this.state.selectedUser.id,\r\n department: this.state.selectedDepartment,\r\n RoleIDs: [this.state.userWOCRoleID], //Keys,\r\n };\r\n\r\n // console.log(__userRolesObj);\r\n\r\n UserAPI.UpdateUserRoles(__userRolesObj)\r\n .then((res) => {\r\n if (this.state.isManager) {\r\n this.__getUsers('all');\r\n } else {\r\n this.__getUsers(this.state.loggedUser.department);\r\n }\r\n this.toggleExistingModal();\r\n swal(`Roles and assets updated successfully.`);\r\n })\r\n .catch((Err) => {\r\n swal('Unable to update roles at this time');\r\n console.log('Error updating roles :: ', Err);\r\n });\r\n };\r\n\r\n IsUserInRole = (userroles) => {\r\n for (let index = 0; index < userroles.length; index++) {\r\n const userrole = userroles[index];\r\n const woc_role = this.state.appRoles.find(\r\n (r) => r.role.id === userrole.id\r\n );\r\n //console.log(woc_role);\r\n if (woc_role) {\r\n this.setState({ userWOCRoleID: woc_role.role.id });\r\n }\r\n this.setState((prevState) => ({\r\n checkedItems: prevState.checkedItems.set(userrole.name.id, true),\r\n }));\r\n }\r\n };\r\n\r\n __renderUsers() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'firstName',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'id',\r\n text: '',\r\n formatter: this.editsFormatter,\r\n },\r\n {\r\n dataField: 'firstName',\r\n text: 'First name',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'lastName',\r\n text: 'Last name',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'company',\r\n text: 'Company',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'jobTile',\r\n text: 'Position',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'department',\r\n text: 'Department',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'address',\r\n text: 'Address',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'phoneNumber',\r\n text: 'Phone',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'creationDate',\r\n text: 'Joined date',\r\n sort: true,\r\n formatter: this.dateFormatter,\r\n },\r\n ];\r\n\r\n const expandRow = {\r\n renderer: (row) => (\r\n
    \r\n
    Role{row.roles.length > 1 ? 's' : ''}
    \r\n
      \r\n {row.roles.map((role, index) => (\r\n \r\n
      \r\n
      \r\n Role name: {role.name}, Description:{' '}\r\n {role.description}\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 Department: {this.state.Department}\r\n

    */}\r\n

    \r\n Filter or export Users data in CSV format. Click on the row to\r\n view Roles if any.\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n\r\n __handleAssetSelectionChange = (evt) => {\r\n // console.log(evt);\r\n setTimeout(() => {\r\n this.setState({ selectedAssets: evt });\r\n }, 20);\r\n };\r\n\r\n handleRoleChange = (roleID) => {\r\n this.setState({ userWOCRoleID: roleID });\r\n //this.setState({ isRoleChecked: !this.state.isRoleChecked });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {this.__renderUsers()}
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Roles and Assets\r\n \r\n \r\n \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.__handleAssetSelectionChange(evt)}\r\n >\r\n \r\n \r\n {/* render roles */}\r\n \r\n \r\n

    Roles:

    \r\n

    \r\n Add or remove{' '}\r\n \r\n {this.state.selectedUser.firstname}{' '}\r\n {this.state.selectedUser.lastname}\r\n {' '}\r\n from role\r\n

    \r\n
    \r\n {this.state.appRoles.map((r, index) => (\r\n this.handleRoleChange(r.role.id)}\r\n />\r\n ))}\r\n
    \r\n {/*
      \r\n {this.state.appRoles.map((role, index) => (\r\n
    • \r\n
      \r\n \r\n
      \r\n
    • \r\n ))}\r\n
    */}\r\n \r\n \r\n \r\n this.setState({ selectedDepartment: e.target.value })\r\n }\r\n required\r\n >\r\n \r\n {this.state.departments.map((d, index) => (\r\n \r\n ))}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default UsersManagements;\r\n","import React from 'react';\r\nimport ReactPlayer from 'react-player';\r\n\r\nconst CCTVItem = ({ video }) => {\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default CCTVItem\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\n\r\nconst NoVideo = () => {\r\n return (\r\n <>\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    \r\n No CCTV found\r\n

    \r\n

    \r\n There are no CCTV at this time.\r\n

    \r\n
    You may activate the sewer main from the utility toggle, click on a main to identify it then\r\n click on \"CCTV video\" button. If videos are available for the selected main, they will display here
    \r\n\r\n \r\n Return Home\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default NoVideo;\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport {\r\n Card,\r\n CardBody, CardFooter, CardHeader\r\n} from 'reactstrap';\r\nimport Spinner from '../Spinner';\r\nimport CCTVItem from './CCTVITEM/CCTVItem';\r\nimport NoVideo from './NoVideo/NoVideo';\r\n\r\nconst __stylePanelHeader = {\r\n position: 'relative',\r\n height: '70px',\r\n backgroundColor: '#313a46',\r\n };\r\n \r\n const __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n };\r\n\r\nconst btnOfficeWrapper = {\r\n position: 'absolute',\r\n left: '0',\r\n right: '0',\r\n top: '0',\r\n };\r\n \r\n const _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n textAlign: 'center',\r\n padding: '0.75rem 0',\r\n };\r\n\r\nclass CCTV extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n videos: []\r\n };\r\n }\r\n\r\n componentDidMount () {\r\n// console.log(this.props);\r\n const {facilityID} = this.props.facilityID;\r\n this.__loadVideos(facilityID);\r\n }\r\n\r\n componentWillUnmount () {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __loadVideos = (facilityID) => {\r\n // https://video.vidyard.com/watch/BLXgYCDGfwU62vdMWybNVJ\r\n // https://www.googleapis.com/drive/v3/files/1Lv9AIz27Bd58-EEFKcDEDFxWFF-u5VC1?alt=media&key=AIzaSyDnc--gGwzinkHljJ1fYt6yJ2hTAyUUQWI\r\n if(facilityID === ''){\r\n this.setState({isLoading: false});\r\n }\r\n else{\r\n const some_videos = this.state.videos;\r\n setTimeout(() => {\r\n for (let index = 0; index < 5; index++) {\r\n some_videos.push({url: 'https://video.vidyard.com/watch/BLXgYCDGfwU62vdMWybNVJ'});\r\n }\r\n this.setState({isLoading: false, videos: some_videos});\r\n }, 2000);\r\n }\r\n }\r\n\r\n __renderComponent () {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n if(this.state.videos.length > 0) {\r\n return (\r\n <>\r\n
    \r\n {\r\n this.state.videos.map((v, i) => (\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 render() {\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n
    \r\n CCTV\r\n
    \r\n
    \r\n {this.state.videos.length}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    {this.__renderComponent()}
    \r\n \r\n
    \r\n \r\n {\r\n this.state.videos.length > 0 && (\r\n \r\n Return Home\r\n \r\n )\r\n }\r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default CCTV;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Card, CardBody, CardFooter, CardHeader } from 'reactstrap';\r\nimport { workorderService } from '../../services/workorder.service';\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n overflowX: 'hidden',\r\n};\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n color: '#fff',\r\n};\r\n\r\nclass WorkOrderHistory extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n workorders: [],\r\n };\r\n }\r\n componentDidMount() {\r\n this.setState({ workorders: this.props.workhistory.workhistory });\r\n }\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\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 Work Order History\r\n
    \r\n
    \r\n this.props.renderComponent('')}\r\n >\r\n Return\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    \r\n Showing {this.state.workorders.length} performed\r\n

    \r\n\r\n
    \r\n {this.state.workorders.map((w, idx) => {\r\n const { workOrder } = w;\r\n// console.log(workOrder);\r\n if ((workOrder.status === 'Archived') || (workOrder.status === 'Completed')) { // HISTORY ONLY FOR COMPLETED AND ARCHVED\r\n return (\r\n \r\n
    \r\n
    {workOrder.workOrderType}
    \r\n
    \r\n

    \r\n Created by: {workOrder.workCreatedBy}\r\n

    \r\n

    \r\n Created on:{' '}\r\n {new Date(workOrder.dateCreated).toLocaleDateString()}\r\n

    \r\n

    \r\n Work assigned to: {workOrder.workAssignedTo}\r\n

    \r\n

    \r\n Status:\r\n \r\n {workorderService.renderStatus(workOrder.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 You are viewing work order history\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default withRouter(WorkOrderHistory);\r\n","import { loadModules } from 'esri-loader';\r\n\r\nconst __isolation__trace__service =\r\n process.env.REACT_APP_ISOLATION_TRACE_SERVICE;\r\n\r\nexport const IsolationTraceService = {\r\n AddStartPointAndBarrier: (\r\n waterisolationTraceGL,\r\n startPointGeometry,\r\n barrierGeometry = null\r\n ) => {\r\n loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n const startingPointMarker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url: 'https://static.arcgis.com/images/Symbols/Shapes/YellowPin2LargeB.png',\r\n width: '64px',\r\n height: '64px',\r\n };\r\n const barrierMarker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url: 'https://static.arcgis.com/images/Symbols/Shapes/RedPin2LargeB.png',\r\n width: '64px',\r\n height: '64px',\r\n };\r\n\r\n waterisolationTraceGL.add(\r\n new Graphic(startPointGeometry, startingPointMarker)\r\n );\r\n if (barrierGeometry) {\r\n waterisolationTraceGL.add(new Graphic(barrierGeometry, barrierMarker));\r\n }\r\n });\r\n },\r\n GetStartingPointGraphic: (location) => {\r\n return loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n const startingPointMarker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url: 'https://static.arcgis.com/images/Symbols/Shapes/YellowPin2LargeB.png',\r\n width: '64px',\r\n height: '64px',\r\n };\r\n return new Graphic(location, startingPointMarker);\r\n });\r\n },\r\n /**\r\n * Trace parameters\r\n * @param {*} view\r\n * @param {[]} traceLocations // The list of starting points and barriers that will define where the trace starts and stops\r\n * @returns\r\n */\r\n performTrace: (view, traceLocations) => {\r\n return loadModules([\r\n 'esri/rest/networks/trace',\r\n 'esri/rest/networks/support/TraceParameters',\r\n 'esri/rest/geoprocessor',\r\n ]).then(([trace, TraceParameters, geoprocessor]) => {\r\n let traceInputDetails = [];\r\n\r\n /* var __config = {\r\n geoprocessing: {\r\n url: gis_services.utilityTraceGP,\r\n inputs: [\r\n {\r\n paramName: 'flags',\r\n displayName: 'Flags',\r\n toolTip: 'Input locations from which to start the trace.',\r\n type: 'Flag',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n },\r\n {\r\n paramName: 'barriers',\r\n displayName: 'Barriers',\r\n toolTip: 'Input locations from which to block the trace.',\r\n type: 'Barrier',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n },\r\n {\r\n paramName: 'skip_locations',\r\n displayName: 'Skip Locations',\r\n toolTip:\r\n 'Locations of disabling features to \"skip\" in the trace.',\r\n type: 'Skip',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n },\r\n ],\r\n outputs: [\r\n {\r\n visibility: true,\r\n paramName: 'result_area',\r\n type: 'Result',\r\n panelText: 'Result Area',\r\n toolTip: '',\r\n displayName: 'Result Area',\r\n displayText: 'Affected Area',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [155, 187, 89, 129],\r\n outline: {\r\n color: [115, 140, 61, 255],\r\n width: 1.5,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n type: 'esriSFS',\r\n style: 'esriSFSSolid',\r\n },\r\n bypassDetails: {\r\n skipable: null,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'wHydrantLateral',\r\n type: 'Result',\r\n panelText: 'wHydrantLateral',\r\n toolTip: '',\r\n displayName: 'wHydrantLateral',\r\n displayText: 'Affected Hydrant Laterals',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [155, 187, 89, 255],\r\n width: 2.25,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n bypassDetails: {\r\n skipable: null,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'wLateralLine',\r\n type: 'Result',\r\n panelText: 'wLateralLine',\r\n toolTip: '',\r\n displayName: 'wLateralLine',\r\n displayText: 'Affected Lateral Lines',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [155, 187, 89, 255],\r\n width: 2.25,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n bypassDetails: {\r\n skipable: null,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'wMain',\r\n type: 'Result',\r\n panelText: 'wMain',\r\n toolTip: '',\r\n displayName: 'wMain',\r\n displayText: 'Affected Mains',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [155, 187, 89, 255],\r\n width: 2.25,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n bypassDetails: {\r\n skipable: null,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'snapped_inputs',\r\n type: 'Result',\r\n panelText: 'Snapped Inputs',\r\n toolTip: '',\r\n displayName: 'Snapped Inputs',\r\n displayText: 'Snapped Inputs',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n bypassDetails: {\r\n skipable: false,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'disabling_wValve',\r\n type: 'Result',\r\n panelText: 'disabling_wValve',\r\n toolTip: '',\r\n displayName: 'disabling_wValve',\r\n displayText: 'Affected Valves',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n bypassDetails: {\r\n skipable: false,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'wCurbStopValve',\r\n type: 'Result',\r\n panelText: 'wCurbStopValve',\r\n toolTip: '',\r\n displayName: 'wCurbStopValve',\r\n displayText: 'Affected Curb Stop Valves',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n bypassDetails: {\r\n skipable: false,\r\n },\r\n },\r\n {\r\n visibility: true,\r\n paramName: 'wHydrant',\r\n type: 'Result',\r\n panelText: 'wHydrant',\r\n toolTip: '',\r\n displayName: 'wHydrant',\r\n displayText: 'Affected Hydrants',\r\n MinScale: 0,\r\n MaxScale: 0,\r\n exportToCSV: false,\r\n saveToLayer: '',\r\n guidField: '',\r\n parameternameField: '',\r\n symbol: {\r\n color: [0, 0, 128, 128],\r\n size: 18,\r\n angle: 0,\r\n xoffset: 0,\r\n yoffset: 0,\r\n type: 'esriSMS',\r\n style: 'esriSMSCircle',\r\n outline: {\r\n color: [0, 0, 128, 255],\r\n width: 0.75,\r\n type: 'esriSLS',\r\n style: 'esriSLSSolid',\r\n },\r\n },\r\n bypassDetails: {\r\n skipable: false,\r\n },\r\n },\r\n ],\r\n },\r\n projectSettings: {\r\n polygonLayerId: 'Water_Outage_System_7440',\r\n pointLayerId: 'Water_Outage_System_2569',\r\n outputParamName: 'result_area',\r\n },\r\n summaryExpression: {\r\n summaryExpressionValueArr: [],\r\n summaryExpressionValue: '',\r\n summaryExpressionTrimmedValue: '',\r\n summaryExpressionNLS: {\r\n title: 'General Settings',\r\n summaryFieldsetText: 'Summary settings',\r\n inputOutput: 'Input/Output',\r\n field: 'Field',\r\n operator: 'Operator',\r\n inputOperatorCountOption: 'Count',\r\n outputOperatorCountOption: 'Count',\r\n outputOperatorSkipCountOption: 'SkipCount',\r\n fieldOperatorSumOption: 'Sum',\r\n fieldOperatorMinOption: 'Min',\r\n fieldOperatorMaxOption: 'Max',\r\n fieldOperatorMeanOption: 'Mean',\r\n expressionAddButtonText: 'Add',\r\n expressionVerifyButtonText: 'Verify',\r\n summaryEditorText: 'Summary Text',\r\n autoZoomAfterTrace: 'Additional Options',\r\n zoomText: 'Auto zoom after trace',\r\n summarSettingTooltipText: 'Add input/output count',\r\n },\r\n autoZoomAfterTrace: false,\r\n },\r\n autoZoomAfterTrace: false,\r\n\r\n watermanagement: {\r\n shutdownService: function (_layer) {\r\n console.log(LayersController);\r\n\r\n LayersController.shutDownService(_layer).then(function (res) {\r\n console.log('The response from the layer controller: ', res);\r\n });\r\n\r\n //console.log(\"Shuting down service: \", _layer);\r\n },\r\n saveOutageArea: function (serviceAreaGraphic) {},\r\n notifyResidents: function () {},\r\n },\r\n }; */\r\n\r\n const params = new TraceParameters({\r\n traceLocations,\r\n outSpatialReference: view.spatialReference,\r\n traceType: 'isolation',\r\n });\r\n return geoprocessor.submitJob(__isolation__trace__service, params);\r\n });\r\n },\r\n};\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport {\r\n Button, Card,\r\n CardBody, CardFooter, CardHeader\r\n} from 'reactstrap';\r\nimport Spinner from '../Spinner';\r\nimport { IsolationTraceService } from './service/isolationTrace.service';\r\n\r\nconst __stylePanelHeader = {\r\n position: 'relative',\r\n height: '70px',\r\n backgroundColor: '#313a46',\r\n };\r\n \r\n const __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n };\r\n\r\nconst btnOfficeWrapper = {\r\n position: 'absolute',\r\n left: '0',\r\n right: '0',\r\n top: '0',\r\n };\r\n \r\n const _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n textAlign: 'center',\r\n padding: '0.75rem 0',\r\n };\r\n\r\n\r\nclass WaterIsolationTrace extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n isPerformingTrace: false,\r\n areBothPointsAvailable: false,\r\n view: this.props.feature.view,\r\n feature: this.props.feature.feature,\r\n location: null,\r\n results: []\r\n };\r\n }\r\n\r\n componentDidMount () {\r\n const waterisolationTraceGL = this.state.view.map.findLayerById(\r\n 'waterisolationTraceGL'\r\n );\r\n waterisolationTraceGL.graphics.removeAll();\r\n setTimeout(() => {\r\n const { location } = this.state.view.popup;\r\n if(location) {\r\n this.setState({location});\r\n this.state.view.popup.close();\r\n //IsolationTraceService.AddStartPointAndBarrier(waterisolationTraceGL, location);\r\n }\r\n }, 50);\r\n }\r\n\r\n componentWillUnmount () {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n getLineLastPoint = (feature) => {\r\n var lastIdx = feature.geometry.paths[0].length - 1;\r\n var lastPnt = feature.geometry.getPoint(0, lastIdx);\r\n return lastPnt;\r\n }\r\n\r\n performTrace = async() => {\r\n if(this.state.feature) {\r\n \r\n try {\r\n const waterisolationTraceGL = this.state.view.map.findLayerById(\r\n 'waterisolationTraceGL'\r\n );\r\n waterisolationTraceGL.type = \"Flag\";\r\n waterisolationTraceGL.add(await IsolationTraceService.GetStartingPointGraphic(this.state.location));\r\n\r\n IsolationTraceService.performTrace(this.state.view, waterisolationTraceGL)\r\n .then((res) => {\r\n console.log(res);\r\n })\r\n } catch (error) {\r\n console.log(\"Error :: \", error);\r\n }\r\n }\r\n }\r\n\r\n __renderComponent () {\r\n //const { attributes } = this.props.feature.feature;\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n\r\n if(this.props.feature.feature) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    You may move the starting point or barrier if necessary

    \r\n \r\n {this.state.isPerformingTrace\r\n ? 'Tracing... please wait'\r\n : 'Perform Trace'}\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 starting and barrier points on the map that will define \r\n where the trace starts and stops\r\n

    \r\n\r\n \r\n {this.state.isPerformingTrace\r\n ? 'Tracing... please wait'\r\n : 'Perform Trace'}\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
    \r\n
    \r\n Isolation Trace\r\n
    \r\n
    \r\n {''}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    {this.__renderComponent()}
    \r\n \r\n
    \r\n \r\n \r\n Return Home\r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default WaterIsolationTrace;\r\n","// DID NOT FIND THIS MODULE ACCESSED IN THE WOC CURRENT AS OF 8/3/2022\r\nimport { loadModules } from 'esri-loader';\r\nimport { workorderService } from '../workorder.service';\r\n\r\nconst options = {\r\n query: {\r\n f: 'json',\r\n },\r\n responseType: 'json',\r\n};\r\n\r\nexport const mapGraphics = {\r\n getSymbol: (featureType) => {\r\n var symbol;\r\n\r\n switch (featureType) {\r\n case 'polyline':\r\n symbol = {\r\n type: 'simple-line',\r\n style: 'dash',\r\n width: 4,\r\n color: [245, 251, 50, 1],\r\n };\r\n break;\r\n case 'polygon':\r\n symbol = {\r\n type: 'simple-fill',\r\n outline: { width: 2, color: [245, 251, 50, 1] },\r\n color: [242, 255, 92, 0.25],\r\n };\r\n break;\r\n\r\n default:\r\n // point default\r\n symbol = {\r\n type: 'simple-marker',\r\n outline: { width: 1.25, color: [245, 251, 50, 1] },\r\n size: 22,\r\n color: [242, 255, 92, 0.25],\r\n };\r\n break;\r\n }\r\n\r\n return symbol;\r\n },\r\n __GetLayerURLAndIDs: (layerURL, layerName) => {\r\n return loadModules(['esri/request']).then(([esriRequest]) => {\r\n var IDs = [];\r\n return esriRequest(layerURL, options).then((response) => {\r\n //console.log(response.data);\r\n const { layers } = response.data;\r\n const l = layers.find((layer) => layer.name === layerName);\r\n IDs.push(l.id);\r\n return { IDs: IDs, layerURL: layerURL };\r\n });\r\n });\r\n },\r\n highlightAssetsAndZoomToExtent: (view, assets) => {\r\n const _gLayer = view.map.findLayerById('assetHighlighterGLayer');\r\n _gLayer.graphics.removeAll();\r\n mapGraphics.__doFindMultipleAssets(assets);\r\n },\r\n \r\n highlightAssetAndZoomTo: async (view, assets) => {\r\n const _gLayer = view.map.findLayerById('assetHighlighterGLayer');\r\n _gLayer.graphics.removeAll();\r\n\r\n const FindTask = [];\r\n\r\n for (let index = 0; index < assets.length; index++) {\r\n const asset = assets[index];\r\n\r\n const { IDs, layerURL } = await mapGraphics.__GetLayerURLAndIDs(\r\n asset.getGISService.serviceLink,\r\n asset.assetName\r\n );\r\n const task = await mapGraphics.__getSingleTask(\r\n asset.facilityID,\r\n IDs,\r\n layerURL,\r\n view\r\n );\r\n //console.log(task);\r\n FindTask.push(task.results[0]);\r\n }\r\n //console.log(FindTask);\r\n return mapGraphics.__zoomTo(FindTask, view);\r\n },\r\n\r\n __getSingleTask: (fid, IDs, serviceUrl, view) => {\r\n return loadModules([\r\n 'esri/tasks/FindTask',\r\n// 'esri/tasks/support/FindParameters',\r\n 'esri/rest/support/FindParameters',\r\n ]).then(([FindTask, FindParameters]) => {\r\n const find = new FindTask({\r\n url: serviceUrl,\r\n });\r\n // Set parameters to only query the Counties layer by name\r\n const params = new FindParameters({\r\n layerIds: IDs,\r\n searchFields: ['FACILITYID'],\r\n searchText: fid,\r\n returnGeometry: true,\r\n outSpatialReference: view.spatialReference,\r\n });\r\n\r\n return find.execute(params);\r\n });\r\n },\r\n\r\n __doFindMultipleAssets: (assets) => {\r\n let layerName = assets[0].assetName;\r\n// console.log(layerName); CHANGED 10/28/2022 DMM\r\n let __whereClause = 'FACILITYID in (';\r\n assets.map((a) => {\r\n __whereClause += `'${a.facilityID}',`;\r\n });\r\n\r\n __whereClause = __whereClause.slice(0, -1); // remove last comma\r\n __whereClause = __whereClause + ')';\r\n\r\n// console.log(__whereClause);\r\n // perform query\r\n loadModules(['esri/tasks/QueryTask', 'esri/tasks/support/Query']).then(\r\n ([QueryTask, Query]) => {\r\n let queryTask = new QueryTask({\r\n url: 'https://gis.doverohio.com/arcgis/rest/services/Managed/Utilities/FeatureServer',\r\n });\r\n let query = new Query();\r\n query.returnGeometry = true;\r\n query.outFields = ['*'];\r\n query.where = 'POP > 1000000'; // Return all cities with a population greater than 1 million\r\n\r\n // When resolved, returns features and graphics that satisfy the query.\r\n queryTask.execute(query).then(function (results) {\r\n// console.log(results.features); changed by DMM 10/31/2022\r\n });\r\n }\r\n );\r\n },\r\n __doFindAsset: (fid, IDs, serviceUrl, view, _gLayer) => {\r\n loadModules([\r\n 'esri/tasks/FindTask',\r\n// 'esri/tasks/support/FindParameters',\r\n 'esri/rest/support/FindParameters',\r\n 'esri/Graphic',\r\n ]).then(([FindTask, FindParameters, Graphic]) => {\r\n const find = new FindTask({\r\n url: serviceUrl,\r\n });\r\n // Set parameters to only query the Counties layer by name\r\n const params = new FindParameters({\r\n layerIds: IDs,\r\n searchFields: ['FACILITYID'],\r\n searchText: fid,\r\n returnGeometry: true,\r\n outSpatialReference: view.spatialReference,\r\n });\r\n find\r\n .execute(params)\r\n .then((res) => {\r\n// console.log(res); CHANGED 10/28/2022 DMM\r\n var features = [];\r\n res.results.map((response) => {\r\n const { feature } = response;\r\n const gr = new Graphic(\r\n feature.geometry,\r\n mapGraphics.getSymbol(feature.geometry.type)\r\n );\r\n features.push(gr);\r\n _gLayer.add(gr);\r\n });\r\n // call zoom\r\n mapGraphics.__zoomTo(features, view);\r\n })\r\n .catch((err) => console.log('ERROR :: ', err));\r\n });\r\n },\r\n\r\n __zoomTo: (TaskFeatures, view) => {\r\n return loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n const _gLayer = view.map.findLayerById('assetHighlighterGLayer');\r\n _gLayer.graphics.removeAll();\r\n var features = [];\r\n TaskFeatures.map((response) => {\r\n const { feature } = response;\r\n const gr = new Graphic(\r\n feature.geometry,\r\n mapGraphics.getSymbol(feature.geometry.type)\r\n );\r\n features.push(gr);\r\n _gLayer.add(gr);\r\n });\r\n\r\n return features;\r\n /* setTimeout(() => {\r\n view.goTo(features);\r\n\r\n }, 20); */\r\n });\r\n },\r\n};\r\n","import React from 'react';\r\nimport { Alert } from 'reactstrap';\r\n\r\nconst NoDataMessage = ( {message} ) => {\r\n return (\r\n <>\r\n \r\n {' '}\r\n Missing Data - \r\n {message}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default NoDataMessage;\r\n","import React from 'react';\r\nimport { Row, Col, Card } from 'reactstrap';\r\nimport NoDataMessage from '../NoDataMessage/NoDataMessage';\r\n\r\nconst reportFiles = ({ reportFiles }) => {\r\n\r\n const __troncateLongtext = (str) => {\r\n return str.length > 15 ? str.substring(0, 15) + '...' : str;\r\n }\r\n\r\n return (\r\n <>\r\n {reportFiles.length > 0 && (\r\n <>\r\n {reportFiles.map((f, idx) => (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {f.reportExtension}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ))}\r\n \r\n )}\r\n {reportFiles.length < 1 && (\r\n <>\r\n {/**If No files */}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport default reportFiles\r\n","import React, { useState } from 'react';\r\nimport { Card, CardBody, \r\n TabContent, TabPane, Nav, \r\n NavItem, NavLink\r\n} from 'reactstrap';\r\n\r\nimport ReportFiles from '../Reports/ReportFiles';\r\n\r\nconst ReportRenderer = ({ videos, photos, reports }) => {\r\n const [activeTab, setActiveTab] = useState('1');\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 \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ReportRenderer\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Card, CardBody } from 'reactstrap';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport ReportRenderer from '../ReportRenderer/ReportRenderer';\r\n\r\nconst CCTV = ({ workorderid, renderInspectionComponent }) => {\r\n const [CCTVvideos, setVideos] = useState([]);\r\n const [CCTVPhotos, setCCTVPhotos] = useState([]);\r\n const [CCTVReportFiles, setFiles] = useState([]);\r\n \r\n // fetch cctv data from the base url and the facility Id\r\n const __fetch__report = async() => {\r\n const { data } = await CrudOperations.GetByID('GISInspections/GetInspectionReports', workorderid);\r\n const __reports_files = data.filter((d) => d.reportType === \"REPORT\");\r\n const __photo_files = data.filter((d) => d.reportType === \"PHOTO\");\r\n const __video_files = data.filter((d) => d.reportType === \"VIDEO\");\r\n\r\n setTimeout(() => {\r\n setCCTVPhotos(__photo_files);\r\n setFiles(__reports_files);\r\n setVideos(__video_files);\r\n }, 20);\r\n }\r\n\r\n useEffect(() => {\r\n __fetch__report();\r\n }, [])\r\n\r\n const backBtnStyle = {\r\n fontSize:'1.5rem',\r\n color:'#737df3',\r\n cursor:'pointer'\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n renderInspectionComponent('WOInspection')}\r\n title='Return'\r\n >\r\n CCTV Report

    \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default CCTV\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Card, CardBody, \r\n TabContent, TabPane, Nav, \r\n NavItem, NavLink\r\n} from 'reactstrap';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\n\r\nconst HydrantFlowTest = ({ facilityIDs, renderInspectionComponent }) => {\r\n\r\n const backBtnStyle = {\r\n fontSize:'1.5rem',\r\n color:'#737df3',\r\n cursor:'pointer'\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n renderInspectionComponent('WOInspection')}\r\n title='Return'\r\n >\r\n Hydrant Flow Test Report

    \r\n \r\n\r\n
    \r\n Coming soon...\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default HydrantFlowTest;\r\n","import React from 'react';\r\nimport { Card, CardBody, \r\n TabContent, TabPane, Nav, \r\n NavItem, NavLink\r\n} from 'reactstrap';\r\n\r\nconst HydrantFlushing = ({ facilityIDs, renderInspectionComponent }) => {\r\n const backBtnStyle = {\r\n fontSize:'1.5rem',\r\n color:'#737df3',\r\n cursor:'pointer'\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n renderInspectionComponent('WOInspection')}\r\n title='Return'\r\n >\r\n Hydrant Flushing Report

    \r\n \r\n\r\n
    \r\n Coming soon...\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default HydrantFlushing\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Card, CardBody } from 'reactstrap';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport ReportRenderer from '../ReportRenderer/ReportRenderer';\r\n\r\nconst ManholeInspection = ({ workorderid, renderInspectionComponent }) => {\r\n const [CCTVvideos, setVideos] = useState([]);\r\n const [CCTVPhotos, setCCTVPhotos] = useState([]);\r\n const [CCTVReportFiles, setFiles] = useState([]);\r\n\r\n const __fetch__report = async() => {\r\n const { data } = await CrudOperations.GetByID('GISInspections/GetInspectionReports', workorderid);\r\n const __reports_files = data.filter((d) => d.reportType === \"REPORT\");\r\n const __photo_files = data.filter((d) => d.reportType === \"PHOTO\");\r\n const __video_files = data.filter((d) => d.reportType === \"VIDEO\");\r\n\r\n setTimeout(() => {\r\n setCCTVPhotos(__photo_files);\r\n setFiles(__reports_files);\r\n setVideos(__video_files);\r\n }, 20);\r\n }\r\n\r\n useEffect(() => {\r\n __fetch__report();\r\n }, [])\r\n\r\n const backBtnStyle = {\r\n fontSize:'1.5rem',\r\n color:'#737df3',\r\n cursor:'pointer'\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n renderInspectionComponent('WOInspection')}\r\n title='Return'\r\n >\r\n Manhole Inspection Report

    \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default ManholeInspection\r\n","import React from 'react';\r\nimport { Card, CardBody, \r\n TabContent, TabPane, Nav, \r\n NavItem, NavLink\r\n} from 'reactstrap';\r\n\r\nconst ValveExercising = ({ facilityIDs, renderInspectionComponent }) => {\r\n const backBtnStyle = {\r\n fontSize:'1.5rem',\r\n color:'#737df3',\r\n cursor:'pointer'\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n renderInspectionComponent('WOInspection')}\r\n title='Return'\r\n >\r\n Valve Exercising Report

    \r\n \r\n\r\n
    \r\n Coming soon...\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default ValveExercising\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n Card,\r\n CardBody\r\n} from 'reactstrap';\r\nimport notFoundImg from '../../../../assets/images/file-searching.svg';\r\n\r\nconst WOInspection = ({ inspectionFeatures, workorder, assets, renderInspectionComponent }) => {\r\n\r\n const [inspectionsModules, setInspectionsModules] = useState([]);\r\n\r\n const fetchInspectionsModules = () => {\r\n \r\n if(inspectionFeatures.length > 0) {\r\n const inspectionsModuleArray = [];\r\n const __gis__layer_name = workorder.attributes.AssetName;\r\n const __feature_class_name = assets[0].assetName;\r\n \r\n inspectionFeatures.map((insp, idx) => {\r\n insp.inspectionLayers.map((layer) => {\r\n if(layer.layerName === __gis__layer_name && layer.featureClass === __feature_class_name) {\r\n inspectionsModuleArray.push(insp);\r\n }\r\n })\r\n });\r\n setInspectionsModules(inspectionsModuleArray);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchInspectionsModules();\r\n }, [])\r\n\r\n return (\r\n <>\r\n {inspectionFeatures.length < 1 && (\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    Inspections not activated

    \r\n

    \r\n There are no active inspections at this time. Please contact \r\n Derek Mair to activate inspection feature\r\n

    \r\n
    \r\n )} \r\n\r\n {inspectionsModules.length < 1 && (\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    No Inspections data

    \r\n

    \r\n There are no inspections associated with this work order at this time. \r\n

    \r\n
    \r\n )}\r\n\r\n {inspectionsModules.length > 0 && (\r\n <>\r\n {inspectionsModules.map((insp, idx) => (\r\n \r\n \r\n \r\n \"\"\r\n \r\n
    \r\n

    \r\n {' '}\r\n renderInspectionComponent(insp.inspectionName)}>{insp.inspectionName} \r\n

    \r\n
    \r\n {insp.description}\r\n
    \r\n
    \r\n
    \r\n
    \r\n ))}\r\n \r\n )} \r\n \r\n )\r\n}\r\n\r\nexport default WOInspection\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { useState } from 'react';\r\nimport {\r\n Button, Col, Modal, ModalBody, ModalHeader, Row, UncontrolledTooltip\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { workorderService } from '../../../../services/workorder.service';\r\n\r\nconst RecurrenceUpdate = ({ feature, reccurenceNber, reccurenceDelay, goBack }) => {\r\n //console.log(feature);\r\n const [modal, setModal] = useState(false);\r\n const [isChangingRecurrence, setIsChangingRecurrence] = useState(false);\r\n\r\n const toggleModal = () => {\r\n setModal(!modal);\r\n };\r\n \r\n const cancelRecurrence = () => {\r\n swal({\r\n text: 'Are you sure to cancel this recurrence?',\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n //[1] update feature from service\r\n Object.keys(feature.attributes).forEach((fieldName) => {\r\n switch (fieldName) {\r\n case 'IsRecurring':\r\n feature.attributes[fieldName] = 'No';\r\n break;\r\n case 'Recurrence': case 'NextDueDate':\r\n feature.attributes[fieldName] = null;\r\n break; \r\n default:\r\n break;\r\n }\r\n });\r\n\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n workorderService.ApplyWorkOrderEdits(edits)\r\n .then((result) => {\r\n if (result.updateFeatureResults.length > 0) {\r\n //[2] update record in backend\r\n const __cancelRecurrence = {\r\n globalID: feature.attributes.GlobalID,\r\n isRecurring:'No',\r\n recurrence: null,\r\n nextDueDate: new Date()\r\n };\r\n workorderService\r\n .UpdateWorkRecurrence(__cancelRecurrence)\r\n .then((updateDataResponse) => {\r\n swal('Recurrence cancelled successfully');\r\n goBack();\r\n })\r\n }\r\n })\r\n \r\n }\r\n });\r\n }\r\n\r\n const changeWorkWorkOrderRecurrence = (event, values) => {\r\n const { reccurenceNber, recurrenceDelay } = values;\r\n\r\n setIsChangingRecurrence(true);\r\n\r\n const Recurrence = `Occurs every ${reccurenceNber} ${recurrenceDelay}`;\r\n const _nextDueDate = workorderService.__getNextDueDate(reccurenceNber, feature.attributes.PlannedDate, recurrenceDelay);\r\n \r\n Object.keys(feature.attributes).forEach((fieldName) => {\r\n switch (fieldName) {\r\n case 'Recurrence': \r\n feature.attributes[fieldName] = Recurrence;\r\n break;\r\n case 'NextDueDate':\r\n feature.attributes[fieldName] = _nextDueDate;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n workorderService.ApplyWorkOrderEdits(edits)\r\n .then((result) => {\r\n //console.log(result);\r\n if (result.updateFeatureResults.length > 0){\r\n const __updaterecurrence = {\r\n globalID: feature.attributes.GlobalID,\r\n isRecurring:'Yes',\r\n recurrence: Recurrence,\r\n nextDueDate: new Date(_nextDueDate)\r\n };\r\n workorderService\r\n .UpdateWorkRecurrence(__updaterecurrence)\r\n .then((updateDataResponse) => {\r\n swal('Recurrence updated successfully');\r\n goBack();\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 Cancel Recurrence\r\n \r\n \r\n Update Recurrence\r\n \r\n\r\n\r\n \r\n \r\n Change Work order Recurrence\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \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\r\n \r\n \r\n {isChangingRecurrence\r\n ? 'Updating...'\r\n : 'Update'}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n )\r\n}\r\n\r\nexport default RecurrenceUpdate\r\n\r\n\r\n","import { AvForm } from 'availity-reactstrap-validation';\r\nimport classnames from 'classnames';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Select from 'react-select';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n Row,\r\n TabContent,\r\n TabPane,\r\n UncontrolledCarousel,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport {\r\n CrudOperations,\r\n GlobalFormatter,\r\n} from '../../../services/CRUDoperations.service';\r\nimport { mapGraphics } from '../../../services/Graphics/graphics.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport CCTV from '../../../utils/Inspections/CCTV/CCTV';\r\nimport HydrantFlowTest from '../../../utils/Inspections/HydrantFlowTest/HydrantFlowTest';\r\nimport HydrantFlushing from '../../../utils/Inspections/HydrantFlushing/HydrantFlushing';\r\nimport ManholeInspection from '../../../utils/Inspections/ManholeInspection/ManholeInspection';\r\nimport ValveExercising from '../../../utils/Inspections/ValveExercising/ValveExercising';\r\nimport './../wo.details.css';\r\nimport WOInspection from './Inspections/WOInspection';\r\nimport RecurrenceUpdate from './RecurrenceUpdate/RecurrenceUpdate';\r\n\r\nclass WorkDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n activeTab: '1',\r\n isReclassifyingWork: false,\r\n isChangingAssignedTo: false,\r\n workStatus: this.props.workorder.attributes.Status,\r\n workAssignedTo:\r\n this.props.workorder.attributes.AssignedToID === ''\r\n ? 'Unassigned'\r\n : this.props.workorder.attributes.AssignedToID,\r\n unassignedWorkStatus: 'Red',\r\n isClaimingWork: false,\r\n selectedWork: this.props.workorder,\r\n GISAssets: [],\r\n GISResources: [],\r\n essentialQuestions: [],\r\n GISAttachments: [],\r\n GISUsers: [],\r\n applicationUsers: [],\r\n DepartmentsUsers: [],\r\n departments: [],\r\n loggedInUser: null,\r\n workAssignedToUserObj: null,\r\n reccurenceNber: 0,\r\n reccurenceDelay: '',\r\n activeAsset: '',\r\n IsZoomingToExtent: false,\r\n IsZoomingToAsset: false,\r\n IsUnassigningWork: false,\r\n IsWorkAssigned: true,\r\n selectedWorkAsset: null,\r\n enabledInspections: [],\r\n activeInspectionComponent: 'WOInspection',\r\n activeInspectionProps: null,\r\n workOrderID: 0,\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleWorkChangeModal = this.toggleWorkChangeModal.bind(this);\r\n }\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n });\r\n }\r\n };\r\n\r\n toggleWorkChangeModal = () => {\r\n this.setState((prevState) => ({\r\n modal: !prevState.modal,\r\n }));\r\n };\r\n\r\n fetchInspections_Data = async () => {\r\n const enabledInspections = [];\r\n const { data } = await CrudOperations.Get('GISInspections');\r\n //console.log(data);\r\n data.map((f) => {\r\n if (f.isEnabled) {\r\n enabledInspections.push(f);\r\n }\r\n });\r\n setTimeout(() => {\r\n this.setState({ enabledInspections });\r\n }, 20);\r\n return; /* DMM 7/20/22 */\r\n };\r\n\r\n componentDidMount() {\r\n this.state.GISAssets.length=0;\r\n this.state.GISResources.length=0; \r\n this.fetchInspections_Data();\r\n this.fetchOrderDetails();\r\n }\r\n\r\n fetchOrderDetails = async () => {\r\n const loggedUser = getLoggedInUser();\r\n //console.log(loggedUser);\r\n const userData = await UserAPI.GetUser(loggedUser.id);\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n const { geometry, attributes } = this.state.selectedWork;\r\n\r\n var __gis__assets = data;\r\n /* __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === userDepartment.departmentID\r\n ); */\r\n\r\n const selectedWorkAsset = __gis__assets.find(\r\n (a) => a.name === attributes.AssetName\r\n );\r\n\r\n var workAssignedToUserObj = { value: '', label: '' };\r\n\r\n if (attributes.AssignedToUID !== '') {\r\n const workAssignedToUser =\r\n selectedWorkAsset.gisServicesUsersConfigurations.find(\r\n (u) => u.userID === attributes.AssignedToUID\r\n );\r\n if (workAssignedToUser) {\r\n workAssignedToUserObj.value = workAssignedToUser.user.id;\r\n workAssignedToUserObj.label = `${workAssignedToUser.user.firstName} ${workAssignedToUser.user.lastName} - ${workAssignedToUser.userWorkSummary.activeWorkOrders}`;\r\n }\r\n }\r\n\r\n this.setState({\r\n IsWorkAssigned: attributes.Status === 'Unassigned' ? false : true,\r\n workStatus: attributes.Status,\r\n workAssignedTo: attributes.AssignedToID,\r\n selectedWorkAsset,\r\n workAssignedToUserObj,\r\n loggedInUser: userData.data,\r\n });\r\n\r\n if (attributes.IsRecurring === 'Yes') {\r\n let recurrenceArr = attributes.Recurrence.split(' ');\r\n let reccurenceDelay = recurrenceArr[recurrenceArr.length - 1];\r\n let reccurenceNber = recurrenceArr[recurrenceArr.length - 2];\r\n\r\n this.setState({\r\n reccurenceNber,\r\n reccurenceDelay,\r\n });\r\n }\r\n if (attributes.Status === 'Archived') {\r\n let detail_content = document.getElementById('layerInfoContentDisplay');\r\n if (detail_content)\r\n detail_content.classList.add('completed-work-detail-bg');\r\n }\r\n if (attributes.Status === 'Completed') {\r\n let detail_content = document.getElementById('layerInfoContentDisplay');\r\n if (detail_content)\r\n detail_content.classList.add('completed-work-detail-bg');\r\n }\r\n switch (workorderService.GetUserRole()) {\r\n case 'supervisor':\r\n /* workorderService\r\n .GetConnectedUserAndAssets(loggedUser.id)\r\n .then((userObj) => {\r\n const {\r\n applicationUser,\r\n applicationUsers,\r\n departments,\r\n resources,\r\n workServices,\r\n } = userObj.data;\r\n\r\n this.setState({\r\n loggedInUser: applicationUser,\r\n applicationUsers,\r\n DepartmentsUsers: applicationUsers,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(\r\n loggedUser.department\r\n );\r\n }); */\r\n break;\r\n\r\n case 'manager':\r\n /* workorderService\r\n .GetConnectedUserAndAssets(loggedUser.id)\r\n .then((resp) => {\r\n const { applicationUser, applicationUsers } = resp.data;\r\n this.setState({ loggedInUser: applicationUser, applicationUsers });\r\n this.__getDepartments();\r\n this.__getUsersByDepartmentWithActiveWorkTally(\r\n attributes.DepartmentName\r\n );\r\n }); */\r\n break;\r\n default: /* field user */\r\n break;\r\n }\r\n\r\n //console.log(this.props);\r\n\r\n // get Work order details\r\n workorderService\r\n .GetManagedOrderDetails(attributes.GlobalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n } else {\r\n const {\r\n workOrderID,\r\n gisAssets,\r\n workOrderResources,\r\n workOrderQuestionAnswers,\r\n } = results.data;\r\n\r\n this.setState({\r\n workOrderID,\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n essentialQuestions: workOrderQuestionAnswers,\r\n });\r\n workorderService.SetAppDetailMode(true);\r\n }\r\n })\r\n .catch((err) => console.log(`Error fetching order details :: ${err}`));\r\n\r\n workorderService\r\n .GetWorkOrderAttachments(attributes.OBJECTID)\r\n .then((resp) => {\r\n //console.log(resp);\r\n if (resp.data.attachmentInfos.length > 0) {\r\n let GISAttachments = [];\r\n const _attachments = resp.data.attachmentInfos;\r\n// const { proxyUrl } = this.props.config.proxyUrl; // undefined proxy reference - needs help\r\n _attachments.map((attachment, index) => {\r\n GISAttachments.push({\r\n// src: `${proxyUrl}?${process.env.REACT_APP_WOC_BASE_SERVICE}FeatureServer/0/${attributes.OBJECTID}/attachments/${attachment.id}`,\r\n src: `${process.env.REACT_APP_WOC_BASE_SERVICE}FeatureServer/0/${attributes.OBJECTID}/attachments/${attachment.id}`,\r\n altText: '', //`Slide ${index}`,\r\n caption: '', //attachment.contentType,\r\n header: '', //attachment.name,\r\n key: index,\r\n });\r\n });\r\n\r\n this.setState({ GISAttachments });\r\n }\r\n })\r\n .catch((err) => console.log('Error fetching attachments :: ', err));\r\n };\r\n\r\n componentDidUpdate() {\r\n //this.fetchOrderDetails();\r\n }\r\n\r\n componentWillUnmount() {\r\n workorderService.SetAppDetailMode(false);\r\n document\r\n .getElementById('layerInfoContentDisplay')\r\n .classList.remove('completed-work-detail-bg');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __GetUsersByDepartment = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n let GISUsers = this.state.GISUsers;\r\n GISUsers = [];\r\n users.data.map((user, index) => {\r\n GISUsers.push({\r\n value: user.id,\r\n label: user.firstName + ' ' + user.lastName,\r\n department: user.department,\r\n });\r\n });\r\n this.setState({ GISUsers });\r\n return;\r\n });\r\n };\r\n\r\n /* __getUsersByDepartmentWithActiveWorkTally = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n // populate users from same department\r\n let GISUsers = [];\r\n users.data.map((user, index) => {\r\n workorderService.GetUserWorkSummary(user.id).then((summary) => {\r\n const { totalWorkOrders, activeWorkOrders, unassignedWorkOrders } =\r\n summary.data;\r\n\r\n GISUsers.push({\r\n value: user.id,\r\n label: `${user.firstName} ${user.lastName} - ${activeWorkOrders}`,\r\n department: user.department,\r\n });\r\n });\r\n });\r\n setTimeout(() => {\r\n // get work assigned to\r\n const assignedToUser = GISUsers.find(\r\n (u) => u.value === this.props.workorder.attributes.AssignedToUID\r\n );\r\n if (assignedToUser) {\r\n const { value, label } = assignedToUser;\r\n this.setState({\r\n workAssignedToUserObj: { value, label },\r\n });\r\n }\r\n this.setState({\r\n GISUsers,\r\n });\r\n }, 200);\r\n });\r\n }; */\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n this.setState({ departments: res.data });\r\n //console.log(this.state.departments);\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { workStatus } = this.state;\r\n return workorderService.renderStatus(workStatus);\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n __zoomToAssetsExtent = () => {\r\n this.setState({ IsZoomingToExtent: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), this.state.GISAssets)\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n __zoomToAsset = (asset) => {\r\n this.setState({ activeAsset: asset.facilityID, IsZoomingToAsset: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), [asset])\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n\r\n __goToAssets = (features) => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n/* workorderService\r\n .mapView()\r\n// .goTo(features) // DMM 12/2/2022\r\n .then(() => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n }); */\r\n };\r\n\r\n _renderAssets() {\r\n if (this.state.GISAssets.length > 0) {\r\n return (\r\n
    \r\n
      \r\n \r\n GIS Assets{' '}\r\n {/* {this.state.GISAssets.length > 1 && (\r\n <>\r\n \r\n \r\n \r\n \r\n {this.state.IsZoomingToExtent && (\r\n \r\n )}\r\n \r\n \r\n Zoom to Extent\r\n \r\n \r\n )} */}\r\n \r\n [ {this.state.GISAssets.length} ]\r\n \r\n \r\n {this.state.GISAssets.map((a, index) => (\r\n \r\n \r\n {a.facilityID === this.state.activeAsset &&\r\n this.state.IsZoomingToAsset && (\r\n \r\n )}\r\n \r\n \r\n

      {a.assetName}

      \r\n

      {a.facilityID}

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

    \r\n No GIS Assets found\r\n

    \r\n

    \r\n There are no gis assets linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderResources() {\r\n if (this.state.GISResources.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 {this.state.GISResources.map((r, index) => (\r\n \r\n \r\n \r\n \r\n \r\n{/* \r\n \r\n \r\n DMM 12/9/2022 */}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResourceRateQtyCost
    {r.name}{r.rate}{r.unit}{GlobalFormatter.FormatUSD(r.rate * r.unit)}{r.resource.name}{r.resource.rate}{r.unit}{GlobalFormatter.FormatUSD(r.resource.rate * r.unit)}
    Total:\r\n {this.__getResourcesTotalCost()}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n No Resources found\r\n

    \r\n

    \r\n There are no work resources linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderAttachments() {\r\n switch (this.state.GISAttachments.length) {\r\n case 0:\r\n return (\r\n <>\r\n
    \r\n \"\"\r\n

    \r\n No Attachments found\r\n

    \r\n

    \r\n There are no attachments linked to this work order.\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\n \r\n );\r\n }\r\n }\r\n\r\n _renderEssentialQuestions() {\r\n if (this.state.essentialQuestions.length > 0) {\r\n return (\r\n \r\n
      \r\n {this.state.essentialQuestions.map((q, index) => (\r\n \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Question {index + 1}\r\n

      {q.essentialQuestion.question}

      \r\n
      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Answer {index + 1}\r\n

      {q.answer}

      \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 No Details found\r\n

    \r\n

    \r\n There are no Essential Details linked to this work order.\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n SetWorkAssignedTo = (e) => {\r\n const { value, label } = e;\r\n this.setState({ workAssignedToUserObj: { value, label } });\r\n };\r\n\r\n __renderWorkAssigned = () => {\r\n/* const { attributes } = this.state.selectedWork; DMM 7/20/22 */\r\n const __usersOptions = [];\r\n if (this.state.selectedWorkAsset) {\r\n this.state.selectedWorkAsset.gisServicesUsersConfigurations.map((u) => {\r\n __usersOptions.push({\r\n value: u.user.id,\r\n label: `${u.user.firstName} ${u.user.lastName} - ${u.userWorkSummary.activeWorkOrders}`,\r\n });\r\n return; /* DMM 7/20/22 */\r\n });\r\n }\r\n return (\r\n \r\n
    \r\n \r\n this.SetWorkAssignedTo(e)}\r\n options={__usersOptions}\r\n ariadescribedby=\"assignedToHelp\"\r\n >\r\n
    \r\n If unselected, this work will be unassigned.\r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n __renderButtonChangeWorkAssignedTo = () => {\r\n const { attributes } = this.state.selectedWork;\r\n //console.log(attributes);\r\n if (\r\n workorderService.GetUserRole() === 'supervisor' ||\r\n (workorderService.GetUserRole() === 'manager' &&\r\n attributes.Status !== 'Completed')\r\n ) {\r\n return (\r\n \r\n Change\r\n \r\n );\r\n }\r\n };\r\n\r\n changeWorkAssignedTo = (event, values) => {\r\n const { workAssignedToUserObj } = this.state;\r\n if (workAssignedToUserObj === null) {\r\n swal('Please select a user');\r\n return;\r\n }\r\n\r\n this.setState({ isChangingAssignedTo: true });\r\n\r\n /**\r\n * [1] update feature service, update properties:\r\n * Status: to Assigned\r\n * AssignedToID\r\n * AssignedToUID\r\n */\r\n\r\n const feature = this.props.workorder;\r\n\r\n Object.keys(feature.attributes).forEach((field, index) => {\r\n switch (field) {\r\n case 'Status':\r\n feature.attributes[field] = 'Assigned';\r\n break;\r\n case 'AssignedToUID':\r\n feature.attributes[field] = `${workAssignedToUserObj.value}`;\r\n break;\r\n case 'AssignedToID':\r\n feature.attributes[field] = `${workAssignedToUserObj.label\r\n .split('-')[0]\r\n .trim()}`;\r\n break;\r\n case 'IsWorkAssigned':\r\n feature.attributes[field] = 1;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n // apply changes\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n\r\n workorderService.ApplyWorkOrderEdits(edits).then((result) => { // 1st - changes applied to feature class\r\n if (result.updateFeatureResults.length > 0) {\r\n // related work records updates\r\n // update related records\r\n const __workOrderObj = {\r\n globalID: feature.attributes.GlobalID,\r\n workAssignedTo: feature.attributes.AssignedToID,\r\n assignedToUID: feature.attributes.AssignedToUID,\r\n status: feature.attributes.Status,\r\n sender: `${this.state.loggedInUser.firstName} ${this.state.loggedInUser.lastName}`,\r\n };\r\n workorderService\r\n .UpdateWorkorderAssigned(__workOrderObj) //2nd - changes applied to database\r\n .then((updateDataResponse) => {\r\n //workorderService.RefreshWorkOrders();\r\n this.setState({\r\n isChangingAssignedTo: false,\r\n workStatus: 'Assigned',\r\n workAssignedTo: __workOrderObj.workAssignedTo,\r\n IsWorkAssigned: true,\r\n });\r\n this.toggleWorkChangeModal();\r\n swal(\r\n `Work order reassigned successfully. \\n \\n ${__workOrderObj.workAssignedTo} has been notified`\r\n );\r\n })\r\n .catch((error) => {\r\n swal('There was an error updating related records.');\r\n console.log(`Error updating related data :: ${error}`);\r\n this.setState({ isChangingAssignedTo: false });\r\n });\r\n } else {\r\n console.log(\r\n 'There were some errors updating the Feature Service. Please try again'\r\n );\r\n this.setState({ isChangingAssignedTo: false });\r\n }\r\n });\r\n };\r\n\r\n __isRecurringUpdate = (isrecurring) => {\r\n var isShowing = false;\r\n const user_role = workorderService.GetUserRole();\r\n if (isrecurring === 'Yes') {\r\n switch (user_role) {\r\n case 'supervisor':\r\n case 'manager':\r\n isShowing = true;\r\n break;\r\n }\r\n }\r\n return isShowing;\r\n };\r\n\r\n unassignWork = () => {\r\n swal({\r\n text: 'Are you sure you want to unassign this work?',\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n //console.log('Unassigning work...');\r\n const { workorder } = this.props;\r\n //console.log(workorder);\r\n //const __previous__assignedUID = attributes.AssignedToUID;\r\n\r\n this.setState({ IsUnassigningWork: true });\r\n\r\n Object.keys(workorder.attributes).forEach((fieldName) => {\r\n switch (fieldName) {\r\n case 'AssignedToID':\r\n workorder.attributes[fieldName] = 'Unassigned';\r\n break;\r\n case 'AssignedToUID':\r\n workorder.attributes[fieldName] = '';\r\n break;\r\n case 'Status':\r\n workorder.attributes[fieldName] = 'Unassigned';\r\n break;\r\n case 'IsWorkAssigned':\r\n workorder.attributes[fieldName] = '0';\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n // apply changes\r\n const edits = {\r\n updateFeatures: [workorder],\r\n };\r\n\r\n //console.log(edits);\r\n workorderService.ApplyWorkOrderEdits(edits).then((result) => {\r\n if (result.updateFeatureResults.length > 0) {\r\n const __workOrderObj = {\r\n globalID: workorder.attributes.GlobalID,\r\n assignedToID: workorder.attributes.AssignedToID, // fixed on 12/8/2022\r\n assignedToUID: workorder.attributes.AssignedToUID,\r\n status: workorder.attributes.Status,\r\n sender: `${this.state.loggedInUser.firstName} ${this.state.loggedInUser.lastName}`,\r\n };\r\n workorderService\r\n .UpdateWorkorderAssigned(__workOrderObj)\r\n .then((res) => {\r\n this.setState({\r\n IsUnassigningWork: false,\r\n IsWorkAssigned: false,\r\n workStatus: 'Unassigned',\r\n workAssignedTo: 'Unassigned',\r\n });\r\n swal(`Work order unassigned successfully.`);\r\n this.toggleWorkChangeModal();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n __setInspectionStateComponent = (\r\n compoment\r\n //props = null\r\n ) => {\r\n this.setState({\r\n activeInspectionComponent: compoment,\r\n //activeInspectionProps: props\r\n });\r\n };\r\n\r\n __renderInspectionComponent = () => {\r\n if (this.state.GISAssets.length > 0) {\r\n switch (this.state.activeInspectionComponent) {\r\n case 'CCTV':\r\n return (\r\n \r\n );\r\n case 'Hydrant Flow Test':\r\n return (\r\n \r\n );\r\n case 'Hydrant Flushing':\r\n return (\r\n \r\n );\r\n case 'Manhole Inspection':\r\n return (\r\n \r\n );\r\n case 'Valve Exercising':\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n
    \r\n

    No Assets found

    \r\n

    \r\n There are no assets associated with this work order at this time.\r\n

    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n const { attributes } = this.props.workorder;\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n GIS Asset :{' '}\r\n {attributes.AssetName}\r\n
    \r\n
    Work order type
    \r\n

    {attributes.WorkType}

    \r\n
    Department
    \r\n

    {attributes.DepartmentName}

    \r\n
    Work assigned by:
    \r\n

    {attributes.OriginatorID}

    \r\n
    \r\n
    Work assigned to:
    \r\n

    {this.state.workAssignedTo}

    \r\n {this.__renderButtonChangeWorkAssignedTo()}\r\n
    \r\n\r\n
    \r\n Status:\r\n {this.__getWorkStatus()}\r\n
    \r\n {attributes.Status === 'Completed' && (\r\n
    \r\n Date Completed:\r\n \r\n {new Date(attributes.DateCompleted).toLocaleDateString()}\r\n \r\n
    \r\n )}\r\n
    Due Date
    \r\n \r\n {new Date(attributes.PlannedDate).toISOString().substr(0,10)}\r\n

    \r\n
    Location:
    \r\n

    \r\n {attributes.LocationAddress}{' '}\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n
    Description:
    \r\n

    {attributes.Description}

    \r\n
    Problem:
    \r\n

    {attributes.ProblemName}

    \r\n
    Resolution:
    \r\n

    {attributes.ResolutionName}

    \r\n
    Field notes:
    \r\n

    \r\n {attributes.FieldNotes ? attributes.FieldNotes : 'Not provided'}\r\n

    \r\n\r\n
    \r\n Recurring Work:\r\n {attributes.IsRecurring}\r\n
    \r\n {attributes.IsRecurring === 'Yes' && (\r\n
    \r\n
    Recurrence:
    \r\n \r\n \r\n

    {attributes.Recurrence}

    \r\n \r\n \r\n {this.__isRecurringUpdate(attributes.IsRecurring) && (\r\n <>\r\n \r\n \r\n )}\r\n \r\n
    \r\n\r\n
    \r\n Next Due Date:\r\n \r\n {attributes.NextDueDate}\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {this._renderAssets()}\r\n {this._renderResources()}\r\n {this._renderAttachments()}\r\n {this._renderEssentialQuestions()}\r\n {this.__renderInspectionComponent()} *\r\n
    \r\n\r\n \r\n \r\n Change Work Order Responsibility\r\n \r\n \r\n \r\n {this.__renderWorkAssigned()}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {this.state.isChangingAssignedTo\r\n ? 'Submitting...'\r\n : 'Submit and Notify User'}\r\n \r\n\r\n {this.state.IsWorkAssigned && (\r\n \r\n {this.state.IsUnassigningWork\r\n ? 'Submitting...'\r\n : 'Unassign Work'}\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 config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(WorkDetails);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n UncontrolledCarousel,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { GlobalFormatter } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport WorkDetails from '../Details/WorkDetails';\r\nimport './../wo.details.css';\r\n\r\nconst __stylePanelHeader = {\r\n position: 'relative',\r\n height: '70px',\r\n backgroundColor: '#313a46',\r\n};\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n};\r\n\r\nconst __workOrders_total = {\r\n position: 'absolute',\r\n top: '15px',\r\n left: '15px',\r\n fontSize: '1.8rem',\r\n fontWeight: '400',\r\n color: '#afadad',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n};\r\n\r\nclass WorkOrderOfficeDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n activeTab: '1',\r\n isReclassifyingWork: false,\r\n workStatus: this.props.workorder.attributes.Status,\r\n unassignedWorkStatus: 'Red',\r\n isClaimingWork: false,\r\n selectedWork: this.props.workorder,\r\n GISAssets: [],\r\n GISResources: [],\r\n essentialQuestions: [],\r\n GISAttachments: [],\r\n workOrderID: 0,\r\n isDeleteEnabled: false, //enable / disable \"DELETE\" for the application\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.openModalWithHeaderClass = this.openModalWithHeaderClass.bind(this);\r\n this.openModalWithBodyClass = this.openModalWithBodyClass.bind(this);\r\n }\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n });\r\n }\r\n };\r\n openModalWithHeaderClass = (className) => {\r\n this.setState({ headerClassName: className });\r\n this.toggle();\r\n };\r\n openModalWithBodyClass = (className) => {\r\n this.setState({ headerClassName: className, bodyClass: className });\r\n this.toggle();\r\n };\r\n componentDidMount() {\r\n// this.state.GISAssets.length=0;\r\n// this.state.GISResources.length=0; \r\n const { geometry, attributes } = this.state.selectedWork;\r\n // get Work order details\r\n this.setWorkDeleteAvailability(attributes.DateInitiated);\r\n workorderService\r\n .GetManagedOrderDetails(attributes.GlobalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n } else {\r\n const {\r\n gisAssets,\r\n workOrderResources,\r\n workServiceID,\r\n workOrderQuestionAnswers,\r\n workOrderID,\r\n } = results.data;\r\n\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n essentialQuestions: workOrderQuestionAnswers,\r\n workOrderID,\r\n });\r\n }\r\n })\r\n .catch((err) => console.log(`Error fetching order details :: ${err}`));\r\n\r\n workorderService\r\n .GetWorkOrderAttachments(attributes.OBJECTID)\r\n .then((resp) => {\r\n if (resp.data.attachmentInfos.length > 0) {\r\n let GISAttachments = [];\r\n const _attachments = resp.data.attachmentInfos;\r\n _attachments.map((attachment, index) => {\r\n GISAttachments.push({\r\n src: `${process.env.REACT_APP_WOC_BASE_SERVICE}FeatureServer/0/${attributes.OBJECTID}/attachments/${attachment.id}`,\r\n altText: '', //`Slide ${index}`,\r\n caption: '', //attachment.contentType,\r\n header: '', //attachment.name,\r\n key: index,\r\n });\r\n });\r\n\r\n this.setState({ GISAttachments });\r\n }\r\n })\r\n .catch((err) => console.log('Error fetching attachments :: ', err));\r\n\r\n // const view = workorderService.mapView();\r\n // workorderService.ZoomToSelectedWork(geometry, view);\r\n // workorderService.__flushSelectedWork(geometry, view);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n setWorkDeleteAvailability = (initiatedDate) => {\r\n this.setState({\r\n isDeleteEnabled:\r\n workorderService.IsDeleteWorkOptionAvailable(initiatedDate),\r\n });\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { workStatus } = this.state;\r\n return workorderService.renderStatus(workStatus);\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n _renderAssets() {\r\n if (this.state.GISAssets.length > 0) {\r\n return (\r\n
    \r\n
      \r\n \r\n GIS Assets{' '}\r\n \r\n [ {this.state.GISAssets.length} ]\r\n \r\n \r\n {this.state.GISAssets.map((a, index) => (\r\n
    • \r\n

      {a.assetName}

      \r\n

      {a.facilityID}

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

    \r\n No GIS Assets found\r\n

    \r\n

    \r\n There are no gis assets linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderResources() {\r\n if (this.state.GISResources.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 {this.state.GISResources.map((r, index) => (\r\n \r\n{/* \r\n \r\n \r\n DMM 12/9/2022 */}\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResourceRateQuantityCost
    {r.resource.name}{r.resource.rate}{r.unit}{GlobalFormatter.FormatUSD(r.resource.rate * r.unit)}{r.name}{r.rate}{r.unit}{GlobalFormatter.FormatUSD(r.rate * r.unit)}
    Total:\r\n {this.__getResourcesTotalCost()}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n No Resources found\r\n

    \r\n

    \r\n There are no work resources linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderAttachments() {\r\n switch (this.state.GISAttachments.length) {\r\n case 0:\r\n return (\r\n <>\r\n
    \r\n \"\"\r\n

    \r\n No Attachments found\r\n

    \r\n

    \r\n There are no attachments linked to this work order.\r\n

    \r\n
    \r\n \r\n );\r\n break;\r\n\r\n default:\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n _renderEssentialQuestions() {\r\n if (this.state.essentialQuestions.length > 0) {\r\n return (\r\n \r\n
      \r\n {this.state.essentialQuestions.map((q, index) => (\r\n \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Question {index + 1}\r\n

      {q.essentialQuestion.question}

      \r\n
      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Answer {index + 1}\r\n

      {q.answer}

      \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 No Questions found\r\n

    \r\n

    \r\n There are no Essential Details linked to this work order.\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n __returnToWorkList = () => {\r\n var selectedWorkID = new URLSearchParams(window.location.search).get('id');\r\n if (selectedWorkID) {\r\n // remove url params\r\n this.props.history.push('/apps/workorders');\r\n }\r\n this.props.renderComponent('');\r\n };\r\n\r\n __deleteWorkOrder = (feature) => {\r\n swal({\r\n text: 'Are you sure to delete this work?',\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n //[1] delete feature from service\r\n const edits = {\r\n deleteFeatures: [feature],\r\n };\r\n\r\n workorderService.ApplyWorkOrderEdits(edits).then((result) => {\r\n //console.log(result);\r\n //[2] delete record from backend\r\n if (result.deleteFeatureResults.length > 0) {\r\n workorderService\r\n .DeleteWorkOrder(this.state.workOrderID)\r\n .then((response) => {\r\n //console.log(response);\r\n swal('Work order deleted successfully');\r\n this.__returnToWorkList();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n render() {\r\n const { attributes } = this.props.workorder;\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    ID: {attributes.WOID}
    \r\n
    \r\n {this.state.isDeleteEnabled && (\r\n <>\r\n \r\n this.__deleteWorkOrder(this.props.workorder)\r\n }\r\n >\r\n \r\n \r\n \r\n Delete work\r\n \r\n \r\n )}\r\n {this.props.workorder.attributes.Status !== 'Completed' && (\r\n <>\r\n \r\n this.props.renderComponent(\r\n 'FieldWorkUpdate',\r\n {\r\n feature: this.props.workorder,\r\n isClaimedWork: false,\r\n },\r\n this.props.user\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n Update work\r\n \r\n \r\n )}\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.__returnToWorkList()}\r\n >\r\n Return\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(WorkOrderOfficeDetails);\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n Card,\r\n CardBody\r\n} from 'reactstrap';\r\nimport notFoundImg from '../../../../assets/images/file-searching.svg';\r\n\r\nconst ArchiveInspection = ({ inspectionFeatures, workorder, assets, renderInspectionComponent }) => {\r\n\r\n const [inspectionsModules, setInspectionsModules] = useState([]);\r\n\r\n const fetchInspectionsModules = () => {\r\n \r\n if(inspectionFeatures.length > 0) {\r\n const inspectionsModuleArray = [];\r\n const __gis__layer_name = workorder.assetName;\r\n const __feature_class_name = assets[0].assetName;\r\n \r\n inspectionFeatures.map((insp, idx) => {\r\n insp.inspectionLayers.map((layer) => {\r\n if(layer.layerName === __gis__layer_name && layer.featureClass === __feature_class_name) {\r\n inspectionsModuleArray.push(insp);\r\n }\r\n })\r\n });\r\n setInspectionsModules(inspectionsModuleArray);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchInspectionsModules();\r\n }, [])\r\n\r\n return (\r\n <>\r\n {inspectionFeatures.length < 1 && (\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    Inspections not activated

    \r\n

    \r\n There are no active inspections at this time. Please contact \r\n Derek Mair to activate inspection feature\r\n

    \r\n
    \r\n )} \r\n\r\n {inspectionsModules.length < 1 && (\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    No Inspections data

    \r\n

    \r\n There are no inspections associated with this work order at this time. \r\n

    \r\n
    \r\n )}\r\n\r\n {inspectionsModules.length > 0 && (\r\n <>\r\n {inspectionsModules.map((insp, idx) => (\r\n \r\n \r\n \r\n \"\"\r\n \r\n
    \r\n

    \r\n {' '}\r\n renderInspectionComponent(insp.inspectionName)}>{insp.inspectionName} \r\n

    \r\n
    \r\n {insp.description}\r\n
    \r\n
    \r\n
    \r\n
    \r\n ))}\r\n \r\n )} \r\n \r\n )\r\n}\r\n\r\nexport default ArchiveInspection\r\n","import { AvForm } from 'availity-reactstrap-validation';\r\nimport classnames from 'classnames';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Select from 'react-select';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n Row,\r\n TabContent,\r\n TabPane,\r\n UncontrolledCarousel,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport {\r\n CrudOperations,\r\n GlobalFormatter,\r\n} from '../../../services/CRUDoperations.service';\r\nimport { mapGraphics } from '../../../services/Graphics/graphics.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport CCTV from '../../../utils/Inspections/CCTV/CCTV';\r\nimport HydrantFlowTest from '../../../utils/Inspections/HydrantFlowTest/HydrantFlowTest';\r\nimport HydrantFlushing from '../../../utils/Inspections/HydrantFlushing/HydrantFlushing';\r\nimport ManholeInspection from '../../../utils/Inspections/ManholeInspection/ManholeInspection';\r\nimport ValveExercising from '../../../utils/Inspections/ValveExercising/ValveExercising';\r\nimport './../wo.details.css';\r\nimport ArchiveInspection from './Inspections/ArchiveInspection';\r\nimport RecurrenceUpdate from './RecurrenceUpdate/RecurrenceUpdate';\r\n\r\nclass ArchiveDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n activeTab: '1',\r\n isReclassifyingWork: false,\r\n isChangingAssignedTo: false,\r\n workStatus: this.props.workorder.status,\r\n workAssignedTo:\r\n this.props.workorder.workAssignedTo === ''\r\n ? 'Unassigned'\r\n : this.props.workorder.workAssignedTo,\r\n unassignedWorkStatus: 'Red',\r\n isClaimingWork: false,\r\n selectedWork: this.props.workorder,\r\n GISAssets: [],\r\n GISResources: [],\r\n essentialQuestions: [],\r\n GISAttachments: [],\r\n GISUsers: [],\r\n applicationUsers: [],\r\n DepartmentsUsers: [],\r\n departments: [],\r\n loggedInUser: null,\r\n workAssignedToUserObj: null,\r\n reccurenceNber: 0,\r\n reccurenceDelay: '',\r\n activeAsset: '',\r\n IsZoomingToExtent: false,\r\n IsZoomingToAsset: false,\r\n IsUnassigningWork: false,\r\n IsWorkAssigned: true,\r\n selectedWorkAsset: null,\r\n enabledInspections: [],\r\n activeInspectionComponent: 'ArchiveInspection',\r\n activeInspectionProps: null,\r\n workOrderID: 0,\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleWorkChangeModal = this.toggleWorkChangeModal.bind(this);\r\n }\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n });\r\n }\r\n };\r\n\r\n toggleWorkChangeModal = () => {\r\n this.setState((prevState) => ({\r\n modal: !prevState.modal,\r\n }));\r\n };\r\n\r\n fetchInspections_Data = async () => {\r\n const enabledInspections = [];\r\n const { data } = await CrudOperations.Get('GISInspections');\r\n //console.log(data);\r\n data.map((f) => {\r\n if (f.isEnabled) {\r\n enabledInspections.push(f);\r\n }\r\n });\r\n setTimeout(() => {\r\n this.setState({ enabledInspections });\r\n }, 20);\r\n return; /* DMM 7/20/22 */\r\n };\r\n\r\n componentDidMount() {\r\n this.state.GISAssets.length=0;\r\n this.state.GISResources.length=0; \r\n this.fetchInspections_Data();\r\n this.fetchOrderDetails();\r\n }\r\n\r\n fetchOrderDetails = async () => {\r\n const loggedUser = getLoggedInUser();\r\n //console.log(loggedUser);\r\n const userData = await UserAPI.GetUser(loggedUser.id);\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n const selWork = this.state.selectedWork;\r\n\r\n var __gis__assets = data;\r\n /* __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === userDepartment.departmentID\r\n ); */\r\n\r\n const selectedWorkAsset = __gis__assets.find(\r\n (a) => a.name === selWork.assetName\r\n );\r\n\r\n var workAssignedToUserObj = { value: '', label: '' };\r\n\r\n if (selWork.assignedToUID !== '') {\r\n const workAssignedToUser =\r\n selectedWorkAsset.gisServicesUsersConfigurations.find(\r\n (u) => u.userID === selWork.assignedToUID\r\n );\r\n if (workAssignedToUser) {\r\n workAssignedToUserObj.value = workAssignedToUser.user.id;\r\n workAssignedToUserObj.label = `${workAssignedToUser.user.firstName} ${workAssignedToUser.user.lastName} - ${workAssignedToUser.userWorkSummary.activeWorkOrders}`;\r\n }\r\n }\r\n\r\n this.setState({\r\n IsWorkAssigned: selWork.status === 'Unassigned' ? false : true,\r\n workStatus: selWork.status,\r\n workAssignedTo: selWork.workAssignedTo,\r\n selectedWorkAsset,\r\n workAssignedToUserObj,\r\n loggedInUser: userData.data,\r\n });\r\n\r\n if (selWork.isRecurring === 'Yes') {\r\n let recurrenceArr = selWork.recurrence.split(' ');\r\n let reccurenceDelay = recurrenceArr[recurrenceArr.length - 1];\r\n let reccurenceNber = recurrenceArr[recurrenceArr.length - 2];\r\n\r\n this.setState({\r\n reccurenceNber,\r\n reccurenceDelay,\r\n });\r\n }\r\n if (selWork.status === 'Archived') {\r\n let detail_content = document.getElementById('layerInfoContentDisplay');\r\n if (detail_content)\r\n detail_content.classList.add('archived-work-detail-bg');\r\n }\r\n if (selWork.status === 'Completed') {\r\n let detail_content = document.getElementById('layerInfoContentDisplay');\r\n if (detail_content)\r\n detail_content.classList.add('completed-work-detail-bg');\r\n }\r\n switch (workorderService.GetUserRole()) {\r\n case 'supervisor':\r\n /* workorderService\r\n .GetConnectedUserAndAssets(loggedUser.id)\r\n .then((userObj) => {\r\n const {\r\n applicationUser,\r\n applicationUsers,\r\n departments,\r\n resources,\r\n workServices,\r\n } = userObj.data;\r\n\r\n this.setState({\r\n loggedInUser: applicationUser,\r\n applicationUsers,\r\n DepartmentsUsers: applicationUsers,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(\r\n loggedUser.department\r\n );\r\n }); */\r\n break;\r\n\r\n case 'manager':\r\n /* workorderService\r\n .GetConnectedUserAndAssets(loggedUser.id)\r\n .then((resp) => {\r\n const { applicationUser, applicationUsers } = resp.data;\r\n this.setState({ loggedInUser: applicationUser, applicationUsers });\r\n this.__getDepartments();\r\n this.__getUsersByDepartmentWithActiveWorkTally(\r\n attributes.DepartmentName\r\n );\r\n }); */\r\n break;\r\n default: /* field user */\r\n break;\r\n }\r\n\r\n //console.log(this.props);\r\n\r\n // get Work order details\r\n workorderService\r\n .GetManagedOrderDetails(selWork.globalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n } else {\r\n const {\r\n workOrderID,\r\n gisAssets,\r\n workOrderResources,\r\n workOrderQuestionAnswers,\r\n } = results.data;\r\n\r\n this.setState({\r\n workOrderID,\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n essentialQuestions: workOrderQuestionAnswers,\r\n });\r\n workorderService.SetAppDetailMode(true);\r\n }\r\n })\r\n .catch((err) => console.log(`Error fetching order details :: ${err}`));\r\n };\r\n\r\n componentDidUpdate() {\r\n //this.fetchOrderDetails();\r\n }\r\n\r\n componentWillUnmount() {\r\n workorderService.SetAppDetailMode(false);\r\n document\r\n .getElementById('layerInfoContentDisplay')\r\n .classList.remove('completed-work-detail-bg');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __GetUsersByDepartment = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n let GISUsers = this.state.GISUsers;\r\n GISUsers = [];\r\n users.data.map((user, index) => {\r\n GISUsers.push({\r\n value: user.id,\r\n label: user.firstName + ' ' + user.lastName,\r\n department: user.department,\r\n });\r\n });\r\n this.setState({ GISUsers });\r\n return;\r\n });\r\n };\r\n\r\n /* __getUsersByDepartmentWithActiveWorkTally = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n // populate users from same department\r\n let GISUsers = [];\r\n users.data.map((user, index) => {\r\n workorderService.GetUserWorkSummary(user.id).then((summary) => {\r\n const { totalWorkOrders, activeWorkOrders, unassignedWorkOrders } =\r\n summary.data;\r\n\r\n GISUsers.push({\r\n value: user.id,\r\n label: `${user.firstName} ${user.lastName} - ${activeWorkOrders}`,\r\n department: user.department,\r\n });\r\n });\r\n });\r\n setTimeout(() => {\r\n // get work assigned to\r\n const assignedToUser = GISUsers.find(\r\n (u) => u.value === this.props.workorder.attributes.AssignedToUID\r\n );\r\n if (assignedToUser) {\r\n const { value, label } = assignedToUser;\r\n this.setState({\r\n workAssignedToUserObj: { value, label },\r\n });\r\n }\r\n this.setState({\r\n GISUsers,\r\n });\r\n }, 200);\r\n });\r\n }; */\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n this.setState({ departments: res.data });\r\n //console.log(this.state.departments);\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { workStatus } = this.state;\r\n return workorderService.renderStatus(workStatus);\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n __zoomToAssetsExtent = () => {\r\n this.setState({ IsZoomingToExtent: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), this.state.GISAssets)\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n __zoomToAsset = (asset) => {\r\n this.setState({ activeAsset: asset.facilityID, IsZoomingToAsset: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), [asset])\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n\r\n __goToAssets = (features) => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n/* workorderService\r\n .mapView()\r\n// .goTo(features) // DMM 12/2/2022\r\n .then(() => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n }); */\r\n };\r\n\r\n _renderAssets() {\r\n if (this.state.GISAssets.length > 0) {\r\n return (\r\n
    \r\n
      \r\n \r\n GIS Assets{' '}\r\n {/* {this.state.GISAssets.length > 1 && (\r\n <>\r\n \r\n \r\n \r\n \r\n {this.state.IsZoomingToExtent && (\r\n \r\n )}\r\n \r\n \r\n Zoom to Extent\r\n \r\n \r\n )} */}\r\n \r\n [ {this.state.GISAssets.length} ]\r\n \r\n \r\n {this.state.GISAssets.map((a, index) => (\r\n \r\n \r\n {a.facilityID === this.state.activeAsset &&\r\n this.state.IsZoomingToAsset && (\r\n \r\n )}\r\n \r\n \r\n

      {a.assetName}

      \r\n

      {a.facilityID}

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

    \r\n No GIS Assets found\r\n

    \r\n

    \r\n There are no gis assets linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderResources() {\r\n if (this.state.GISResources.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 {this.state.GISResources.map((r, index) => (\r\n \r\n \r\n \r\n \r\n \r\n{/* \r\n \r\n \r\n DMM 12/9/2022 */}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResourceRateQtyCost
    {r.name}{r.rate}{r.unit}{GlobalFormatter.FormatUSD(r.rate * r.unit)}{r.resource.name}{r.resource.rate}{r.unit}{GlobalFormatter.FormatUSD(r.resource.rate * r.unit)}
    Total:\r\n {this.__getResourcesTotalCost()}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n No Resources found\r\n

    \r\n

    \r\n There are no work resources linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderAttachments() {\r\n switch (this.state.GISAttachments.length) {\r\n case 0:\r\n return (\r\n <>\r\n
    \r\n \"\"\r\n

    \r\n Attachments Not Available\r\n

    \r\n

    \r\n Attachments are not accessible for \"Archived\" work orders.\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\n \r\n );\r\n }\r\n }\r\n\r\n _renderEssentialQuestions() {\r\n if (this.state.essentialQuestions.length > 0) {\r\n return (\r\n \r\n
      \r\n {this.state.essentialQuestions.map((q, index) => (\r\n \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Question {index + 1}\r\n

      {q.essentialQuestion.question}

      \r\n
      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Answer {index + 1}\r\n

      {q.answer}

      \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 No Details found\r\n

    \r\n

    \r\n There are no Essential Details linked to this work order.\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n SetWorkAssignedTo = (e) => {\r\n const { value, label } = e;\r\n this.setState({ workAssignedToUserObj: { value, label } });\r\n };\r\n\r\n __renderWorkAssigned = () => {\r\n/* const { attributes } = this.state.selectedWork; DMM 7/20/22 */\r\n const __usersOptions = [];\r\n if (this.state.selectedWorkAsset) {\r\n this.state.selectedWorkAsset.gisServicesUsersConfigurations.map((u) => {\r\n __usersOptions.push({\r\n value: u.user.id,\r\n label: `${u.user.firstName} ${u.user.lastName} - ${u.userWorkSummary.activeWorkOrders}`,\r\n });\r\n return; /* DMM 7/20/22 */\r\n });\r\n }\r\n return (\r\n \r\n
    \r\n \r\n this.SetWorkAssignedTo(e)}\r\n options={__usersOptions}\r\n ariadescribedby=\"assignedToHelp\"\r\n >\r\n
    \r\n If unselected, this work will be unassigned.\r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n __renderButtonChangeWorkAssignedTo = () => {\r\n const selWork = this.state.selectedWork;\r\n //console.log(attributes);\r\n if (\r\n workorderService.GetUserRole() === 'supervisor' ||\r\n (workorderService.GetUserRole() === 'manager' &&\r\n selWork.status !== 'Completed')\r\n ) {\r\n return (\r\n \r\n Change\r\n \r\n );\r\n }\r\n };\r\n\r\n \r\n __isRecurringUpdate = (isrecurring) => {\r\n var isShowing = false;\r\n const user_role = workorderService.GetUserRole();\r\n if (isrecurring === 'Yes') {\r\n switch (user_role) {\r\n case 'supervisor':\r\n case 'manager':\r\n isShowing = true;\r\n break;\r\n }\r\n }\r\n return isShowing;\r\n };\r\n\r\n __setInspectionStateComponent = (\r\n compoment\r\n //props = null\r\n ) => {\r\n this.setState({\r\n activeInspectionComponent: compoment,\r\n //activeInspectionProps: props\r\n });\r\n };\r\n\r\n __renderInspectionComponent = () => {\r\n if (this.state.GISAssets.length > 0) {\r\n switch (this.state.activeInspectionComponent) {\r\n case 'CCTV':\r\n return (\r\n \r\n );\r\n case 'Hydrant Flow Test':\r\n return (\r\n \r\n );\r\n case 'Hydrant Flushing':\r\n return (\r\n \r\n );\r\n case 'Manhole Inspection':\r\n return (\r\n \r\n );\r\n case 'Valve Exercising':\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n
    \r\n

    No Assets found

    \r\n

    \r\n There are no assets associated with this work order at this time.\r\n

    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n const selWork = this.props.workorder; //data needed for selwork? DMM 10/3/2023\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n GIS Asset :{' '}\r\n {selWork.assetName}\r\n
    \r\n
    Work order type
    \r\n

    {selWork.workOrderType}

    \r\n
    Department
    \r\n

    {selWork.departmentName}

    \r\n
    Work assigned by:
    \r\n

    {selWork.workCreatedBy}

    \r\n
    \r\n
    Work assigned to:
    \r\n

    {this.state.workAssignedTo}

    \r\n {this.__renderButtonChangeWorkAssignedTo()}\r\n
    \r\n\r\n
    \r\n Status:\r\n {this.__getWorkStatus()}\r\n
    \r\n {selWork.status === 'Completed' && (\r\n
    \r\n Date Completed:\r\n \r\n {new Date(selWork.dateCompleted).toLocaleDateString()}\r\n \r\n
    \r\n )}\r\n
    Due Date
    \r\n \r\n {new Date(selWork.plannedDate).toISOString().substr(0,10)}\r\n

    \r\n
    Location:
    \r\n

    \r\n {selWork.locationAddress}{' '}\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n
    Description:
    \r\n

    {selWork.description}

    \r\n
    Problem:
    \r\n

    {selWork.problemName}

    \r\n
    Resolution:
    \r\n

    {selWork.resolutionName}

    \r\n
    Field notes:
    \r\n

    \r\n {selWork.fieldNotes ? selWork.fieldNotes : 'Not provided'}\r\n

    \r\n\r\n
    \r\n Recurring Work:\r\n {selWork.isRecurring}\r\n
    \r\n {selWork.isRecurring === 'Yes' && (\r\n
    \r\n
    Recurrence:
    \r\n \r\n \r\n

    {selWork.recurrence}

    \r\n \r\n \r\n {this.__isRecurringUpdate(selWork.isRecurring) && (\r\n <>\r\n \r\n \r\n )}\r\n \r\n
    \r\n\r\n
    \r\n Next Due Date:\r\n \r\n {selWork.nextDueDate}\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {this._renderAssets()}\r\n {this._renderResources()}\r\n {this._renderAttachments()}\r\n {this._renderEssentialQuestions()}\r\n {this.__renderInspectionComponent()} *\r\n
    \r\n\r\n \r\n \r\n Change Work Order Responsibility\r\n \r\n \r\n \r\n {this.__renderWorkAssigned()}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {this.state.isChangingAssignedTo\r\n ? 'Submitting...'\r\n : 'Submit and Notify User'}\r\n \r\n\r\n {this.state.IsWorkAssigned && (\r\n \r\n {this.state.IsUnassigningWork\r\n ? 'Submitting...'\r\n : 'Unassign Work'}\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 config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(ArchiveDetails);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n UncontrolledCarousel,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { GlobalFormatter } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport ArchiveDetails from '../Details/ArchiveDetails';\r\nimport './../wo.details.css';\r\n\r\nconst __stylePanelHeader = {\r\n position: 'relative',\r\n height: '70px',\r\n backgroundColor: '#313a46',\r\n};\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n};\r\n\r\nconst __workOrders_total = {\r\n position: 'absolute',\r\n top: '15px',\r\n left: '15px',\r\n fontSize: '1.8rem',\r\n fontWeight: '400',\r\n color: '#afadad',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n};\r\n\r\nclass WorkOrderOfficeArchiveDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n activeTab: '1',\r\n isReclassifyingWork: false,\r\n workStatus: this.props.workorder.status,\r\n unassignedWorkStatus: 'Red',\r\n isClaimingWork: false,\r\n selectedWork: this.props.workorder,\r\n GISAssets: [],\r\n GISResources: [],\r\n essentialQuestions: [],\r\n GISAttachments: [],\r\n workOrderID: 0,\r\n isDeleteEnabled: false, //enable / disable \"DELETE\" for the application\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.openModalWithHeaderClass = this.openModalWithHeaderClass.bind(this);\r\n this.openModalWithBodyClass = this.openModalWithBodyClass.bind(this);\r\n }\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n });\r\n }\r\n };\r\n openModalWithHeaderClass = (className) => {\r\n this.setState({ headerClassName: className });\r\n this.toggle();\r\n };\r\n openModalWithBodyClass = (className) => {\r\n this.setState({ headerClassName: className, bodyClass: className });\r\n this.toggle();\r\n };\r\n componentDidMount() {\r\n// this.state.GISAssets.length=0;\r\n// this.state.GISResources.length=0; \r\n const selWork = this.state.selectedWork;\r\n // get Work order details\r\n this.setWorkDeleteAvailability(selWork.dateCreated);\r\n workorderService\r\n .GetManagedOrderDetails(selWork.gobalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n } else {\r\n const {\r\n gisAssets,\r\n workOrderResources,\r\n workServiceID,\r\n workOrderQuestionAnswers,\r\n workOrderID,\r\n } = results.data;\r\n\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n essentialQuestions: workOrderQuestionAnswers,\r\n workOrderID,\r\n });\r\n }\r\n })\r\n .catch((err) => console.log(`Error fetching order details :: ${err}`));\r\n\r\n // const view = workorderService.mapView();\r\n // workorderService.ZoomToSelectedWork(geometry, view);\r\n // workorderService.__flushSelectedWork(geometry, view);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n setWorkDeleteAvailability = (initiatedDate) => {\r\n this.setState({\r\n isDeleteEnabled:\r\n workorderService.IsDeleteWorkOptionAvailable(initiatedDate),\r\n });\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { workStatus } = this.state;\r\n return workorderService.renderStatus(workStatus);\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n _renderAssets() {\r\n if (this.state.GISAssets.length > 0) {\r\n return (\r\n
    \r\n
      \r\n \r\n GIS Assets{' '}\r\n \r\n [ {this.state.GISAssets.length} ]\r\n \r\n \r\n {this.state.GISAssets.map((a, index) => (\r\n
    • \r\n

      {a.assetName}

      \r\n

      {a.facilityID}

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

    \r\n No GIS Assets found\r\n

    \r\n

    \r\n There are no gis assets linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderResources() {\r\n if (this.state.GISResources.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 {this.state.GISResources.map((r, index) => (\r\n \r\n{/* \r\n \r\n \r\n DMM 12/9/2022 */}\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResourceRateQuantityCost
    {r.resource.name}{r.resource.rate}{r.unit}{GlobalFormatter.FormatUSD(r.resource.rate * r.unit)}{r.name}{r.rate}{r.unit}{GlobalFormatter.FormatUSD(r.rate * r.unit)}
    Total:\r\n {this.__getResourcesTotalCost()}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \"\"\r\n

    \r\n No Resources found\r\n

    \r\n

    \r\n There are no work resources linked to this work order.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n _renderAttachments() {\r\n switch (this.state.GISAttachments.length) {\r\n case 0:\r\n return (\r\n <>\r\n
    \r\n \"\"\r\n

    \r\n No Attachments found\r\n

    \r\n

    \r\n There are no attachments linked to this work order.\r\n

    \r\n
    \r\n \r\n );\r\n break;\r\n\r\n default:\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n _renderEssentialQuestions() {\r\n if (this.state.essentialQuestions.length > 0) {\r\n return (\r\n \r\n
      \r\n {this.state.essentialQuestions.map((q, index) => (\r\n \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Question {index + 1}\r\n

      {q.essentialQuestion.question}

      \r\n
      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n
      \r\n
      \r\n Answer {index + 1}\r\n

      {q.answer}

      \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 No Questions found\r\n

    \r\n

    \r\n There are no Essential Details linked to this work order.\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n __returnToWorkList = () => {\r\n var selectedWorkID = new URLSearchParams(window.location.search).get('id');\r\n if (selectedWorkID) {\r\n // remove url params\r\n this.props.history.push('/apps/workorders');\r\n }\r\n this.props.renderComponent('');\r\n };\r\n\r\n __deleteWorkOrder = (feature) => {\r\n swal({\r\n text: 'Are you sure to delete this work?',\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n //[1] delete feature from service\r\n const edits = {\r\n deleteFeatures: [feature],\r\n };\r\n\r\n workorderService.ApplyWorkOrderEdits(edits).then((result) => {\r\n //console.log(result);\r\n //[2] delete record from backend\r\n if (result.deleteFeatureResults.length > 0) {\r\n workorderService\r\n .DeleteWorkOrder(this.state.workOrderID)\r\n .then((response) => {\r\n //console.log(response);\r\n swal('Work order deleted successfully');\r\n this.__returnToWorkList();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n render() {\r\n const selWork = this.props.workorder;\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    ID: {selWork.workOrderID}
    \r\n
    \r\n {this.state.isDeleteEnabled && (\r\n <>\r\n \r\n this.__deleteWorkOrder(this.props.workorder)\r\n }\r\n >\r\n \r\n \r\n \r\n Delete work\r\n \r\n \r\n )}\r\n {this.props.workorder.status !== 'Archived' && (\r\n <>\r\n \r\n this.props.renderComponent(\r\n 'FieldWorkUpdate',\r\n {\r\n feature: this.props.workorder,\r\n isClaimedWork: false,\r\n },\r\n this.props.user\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n Update work\r\n \r\n \r\n )}\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.__returnToWorkList()}\r\n >\r\n Return\r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(WorkOrderOfficeArchiveDetails);\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { Component, Fragment } from 'react';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport Select from 'react-select';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Col,\r\n Input,\r\n Label,\r\n Row,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport Spinner from '../Spinner';\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n overflowX: 'hidden',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n color: '#fff',\r\n};\r\n\r\nclass CreateWorkOrder extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n locationBtnActive: false,\r\n User: null,\r\n AssignedToUID: '',\r\n SRCUsers: [],\r\n GISServices: [],\r\n GISServicesType: [],\r\n GISServicesTypes: [],\r\n GISAssets: [],\r\n GISRestServices: [],\r\n GISRestServicesOptions: [],\r\n GISProblems: [],\r\n GISProblemsType: [],\r\n GISProblemsTypes: [],\r\n WorkAssignedToUser: null,\r\n WorkAssignedToUsersOptions: [],\r\n SelectedGISAsset: null,\r\n SelectedWorkType: null,\r\n SelectedProblemType: null,\r\n SelectedUserAssignedTo: null,\r\n essentialQuestions: null,\r\n GISUsers: [],\r\n WorkAssignedTo: '',\r\n globalID: '',\r\n departmentID: 0,\r\n selectedDepartment: null,\r\n workOrderType: '',\r\n workServiceID: 0,\r\n highlight: null,\r\n view: null,\r\n ismappingNewWork: false,\r\n NewWorkOrderGraphic: null,\r\n NewWorkOrderAddress: null,\r\n IsNewWorkAttributesVisible: false,\r\n isAssetBasedWork: false,\r\n isWorkAddressFound: false,\r\n isSubmittingWork: false,\r\n SketchModel: null,\r\n WorkOrderGeometry: null,\r\n isUILoading: true,\r\n workAssetDetails: '',\r\n sketchDisplay: 'none',\r\n departments: [],\r\n workOrderDueDate: null,\r\n workDescription: '',\r\n workTypeOptions: [],\r\n departmentOptions: [],\r\n assignedToOptions: [],\r\n workAssignedToUserObj: null,\r\n selectedWorkType: null,\r\n selectedProblemType: null,\r\n selectedWorkAsset: null,\r\n IsReccurrence: 'No',\r\n OccurrenceNumber: 1,\r\n OccurrenceDelay: 'Days',\r\n nextOccurenceDueDate: '',\r\n isAddingMoreAssets: false,\r\n selectedGISAsset: null,\r\n ProblemName: '',\r\n ResolutionName: '',\r\n ProblemID: 0,\r\n ResolutionID: 0,\r\n DateRequired: null,\r\n DateCompleted: null,\r\n LocationAddress: null,\r\n Description: null,\r\n FieldNotes: null,\r\n AssetName: null,\r\n AssetID: null,\r\n DepartmentName: null,\r\n };\r\n }\r\n\r\n __getGISAssets = async () => {\r\n try {\r\n const loggedUser = getLoggedInUser();\r\n const __user = await UserAPI.GetUser(loggedUser.id);\r\n\r\n const view = workorderService.mapView();\r\n var curr = new Date();\r\n //curr.setDate(curr.getDate() + 3);\r\n var workOrderDueDate = curr.toISOString().substr(0, 10);\r\n\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n const departmentData = await CrudOperations.Get('Departments');\r\n const GISServicesTypes = await CrudOperations.Get('Services');\r\n const GISProblemsTypes = await CrudOperations.Get('ProblemResolutions');\r\n\r\n const departments = departmentData.data;\r\n // Get departmentID\r\n const userDepartment = departments.find(\r\n ({ name }) => name === loggedUser.department\r\n );\r\n\r\n var __gis__assets = data;\r\n var __gis__services = GISServicesTypes.data;\r\n var __gis__problems = GISProblemsTypes.data.problems;\r\n\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === userDepartment.departmentID\r\n );\r\n\r\n if (__gis__assets.length < 1) {\r\n swal(\r\n `There are no asset defined for department ${loggedUser.department}. Please make sure to add GIS Services before creating work order.`\r\n );\r\n this.props.renderComponent('');\r\n return;\r\n }\r\n __gis__services = __gis__services.filter(\r\n (s) =>\r\n s.gisService.getGISService.departmentID ===\r\n userDepartment.departmentID\r\n );\r\n __gis__problems = __gis__problems.filter(\r\n (s) =>\r\n s.problemAsset.getGISService.departmentID ===\r\n userDepartment.departmentID\r\n );\r\n\r\n }\r\n const GISRestServicesOptions = [];\r\n // console.log(__gis__assets);\r\n __gis__assets.map((o) => {\r\n GISRestServicesOptions.push({\r\n value: o.gisServicesConfigurationID,\r\n label: o.name,\r\n users: o.gisServicesUsersConfigurations,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISRestServices: __gis__assets,\r\n GISRestServicesOptions,\r\n GISServicesTypes: __gis__services,\r\n GISProblemsTypes: __gis__problems,\r\n departments,\r\n IsReccurrence: 'No',\r\n view,\r\n workOrderDueDate,\r\n User: __user.data,\r\n });\r\n\r\n setTimeout(() => {\r\n // this.__configureServicesSelection();\r\n this.__configureServicesProblemsSelection();\r\n }, 500);\r\n return Promise.resolve(this.state.view)\r\n } catch (error) {\r\n return Promise.reject(error)\r\n }\r\n };\r\n\r\n __configureServicesSelection = () => { //REPLACED WITH _configureServicesProblemsSelection 12/22/2022 DMM\r\n const GISServices = [];\r\n this.state.GISServicesType.map((s) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISServices,\r\n });\r\n };\r\n\r\n __configureServicesProblemsSelection = () => {\r\n const GISServices = [];\r\n const GISProblems = [];\r\n this.state.GISServicesType.map((s) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n\r\n this.state.GISProblemsType.map((s) => {\r\n GISProblems.push({\r\n value: s.problemID,\r\n label: s.name,\r\n description: s.description,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISServices,\r\n GISProblems,\r\n });\r\n };\r\n/*\r\n componentDidMount() {\r\n this.__getGISAssets();\r\n setTimeout(() => {\r\n this.__initAddressAndSketchModelView();\r\n this.__initWorkCreateSteps();\r\n }, 500);\r\n }\r\n*/\r\n componentDidMount() {\r\n this.__getGISAssets()\r\n .then(() => this.__initAddressAndSketchModelView())\r\n .then(() => this.__initWorkCreateSteps());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n // destroy the draw tool\r\n if (this.state.SketchModel) {\r\n this.state.SketchModel.destroy();\r\n }\r\n }\r\n\r\n OnWorkTypeSelectionChange = (evt) => {\r\n //console.log(evt);\r\n\r\n //SelectedWorkType\r\n this.setState({ selectedWorkType: evt });\r\n };\r\n\r\n OnProblemTypeSelectionChange = (evt) => {\r\n //console.log(evt);\r\n\r\n //SelectedWorkType\r\n this.setState({ selectedProblemType: evt });\r\n };\r\n\r\n\r\n OnWorkUserAssignedSelectionChange = (evt) => {\r\n //SelectedUserAssignedTo\r\n// console.log(evt);\r\n };\r\n\r\n OnAssetSelectionChange = ({ label, value }) => {\r\n // value here is the gisServicesConfigurationID and label the name\r\n const selectedGISService = this.state.GISRestServices.find(\r\n (s) => s.gisServicesConfigurationID === value\r\n );\r\n\r\n const WorkAssignedToUser = null,\r\n WorkAssignedToUsersOptions = [];\r\n //console.log(selectedGISService);\r\n\r\n // update work type selection\r\n var GISServicesType = this.state.GISServicesTypes;\r\n var GISProblemsType = this.state.GISProblemsTypes;\r\n\r\n GISServicesType = GISServicesType.filter(\r\n (t) => t.gisService.gisServicesConfigurationID === value\r\n );\r\n\r\n GISProblemsType = GISProblemsType.filter(\r\n (t) => t.problemAsset.gisServicesConfigurationID === value\r\n );\r\n\r\n // update users choices\r\n if (selectedGISService.gisServicesUsersConfigurations.length > 0) {\r\n selectedGISService.gisServicesUsersConfigurations.map((u) => {\r\n const __user = u.user;\r\n WorkAssignedToUsersOptions.push({\r\n value: __user.id,\r\n label: `${__user.firstName} ${__user.lastName} - ${u.userWorkSummary.activeWorkOrders}`,\r\n department: __user.department,\r\n });\r\n });\r\n\r\n setTimeout(() => {\r\n this.setState({ WorkAssignedToUsersOptions });\r\n }, 50);\r\n }\r\n\r\n this.setState({\r\n GISServicesType,\r\n GISProblemsType,\r\n SelectedGISAsset: selectedGISService,\r\n selectedGISAsset: {\r\n label: selectedGISService.name,\r\n value: selectedGISService.gisServicesConfigurationID,\r\n },\r\n });\r\n setTimeout(() => {\r\n// this.__configureServicesSelection();\r\n this.__configureServicesProblemsSelection();\r\n }, 500);\r\n };\r\n\r\n __initWorkCreateSteps = () => { \r\n const { feature } = this.props;\r\n const GISAssets = [];\r\n if (feature) {\r\n if (feature.hasOwnProperty('gisAsset') && feature.gisAsset !== null) {\r\n GISAssets.push(feature.gisAsset);\r\n const assetDepartment = workorderService\r\n .GetApplicationDepartments()\r\n .find((d) => d.departmentID === feature.gisAsset.departmentID); \r\n if (GISAssets.length > 0) {\r\n setTimeout(() => {\r\n this.setState({\r\n GISAssets,\r\n workAssetDetails:\r\n GISAssets.length > 0\r\n ? `for asset ${GISAssets[0].facilityID}`\r\n : '',\r\n departmentID: assetDepartment.departmentID,\r\n });\r\n this.handleWorkCreationFromURL(feature.feature.geometry);\r\n\r\n // set selectedAsset\r\n const userDefaultAsset = this.state.GISRestServices.find(\r\n (a) => a.name === feature.gisAsset.sourceLayer\r\n );\r\n this.setState({\r\n selectedGISAsset: {\r\n label: userDefaultAsset.name,\r\n value: userDefaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n setTimeout(() => {\r\n const { label, value } = this.state.selectedGISAsset;\r\n this.OnAssetSelectionChange({ label, value });\r\n }, 200);\r\n }, 200);\r\n }\r\n }\r\n }\r\n };\r\n\r\n/* onAddmoreAssets = () => {\r\n this.setState({ isAddingMoreAssets: true });\r\n workorderService.SetAppInAddingAssets(true);\r\n const view = workorderService.mapView();\r\n view.popup.on('trigger-action', (evt) => {\r\n if (evt.action.id === 'add-work-asset-action') {\r\n const { selectedFeature } = view.popup;\r\n this.addAsset(view.popup.title, selectedFeature.attributes.FACILITYID);\r\n view.popup.close();\r\n }\r\n });\r\n //console.log(this.state.GISAssets);\r\n }; */\r\n\r\n__getCaseSensitiveAttributeName = (fieldAliases, fieldName) => {\r\n for (var key in fieldAliases) { \r\n if (key.toUpperCase() === fieldName.toUpperCase()){\r\n return key;\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n onAddmoreAssets = () => { //redone by DMM on 12/2/2022\r\n this.setState({ isAddingMoreAssets: true });\r\n workorderService.SetAppInAddingAssets(true);\r\n const view = workorderService.mapView();\r\n view.popup.on('trigger-action', (evt) => {\r\n if (evt.action.id === 'add-work-asset-action') {\r\n const { selectedFeature } = view.popup;\r\n var mySensitiveField = this.__getCaseSensitiveAttributeName(selectedFeature.attributes, \"facilityid\");\r\n const layer_url = selectedFeature.sourceLayer.url;\r\n const __source__layer = layer_url.split('MapServer')[0];\r\n let _gisServicesConfigurationID = 0;\r\n let _gisServicesDepartmentID = 0;\r\n const __appLayers = workorderService.GetApplicationLayers();\r\n\r\n const __service = __appLayers.find(\r\n (s) => s.serviceLink === `${__source__layer}MapServer`\r\n );\r\n _gisServicesConfigurationID = parseInt(\r\n __service.gisServicesConfigurationID\r\n );\r\n _gisServicesDepartmentID = parseInt(\r\n __service.departmentID\r\n );\r\n\r\n let __TitleAndServiceName = view.popup.title.split('|');\r\n const __gisAsset = {\r\n assetName: __TitleAndServiceName[0].trim(),\r\n facilityID: selectedFeature.attributes[mySensitiveField],\r\n gisServicesConfigurationID: _gisServicesConfigurationID, // DMM 12/6/2022\r\n };\r\n\r\n this.addAsset(__gisAsset);\r\n view.popup.close();\r\n }\r\n });\r\n //console.log(this.state.GISAssets);\r\n };\r\n\r\n\r\n addAsset = (asset) => {\r\n const GISAssets = this.state.GISAssets;\r\n const _indexExist = GISAssets.findIndex(\r\n (a) => a.facilityID === asset.facilityID\r\n );\r\n if (_indexExist > -1) {\r\n swal('This asset has been already added');\r\n } else {\r\n GISAssets.push(asset);\r\n this.setState({ GISAssets });\r\n }\r\n };\r\n\r\n __getNextDueDate = () => {\r\n var OccurrenceNumber = this.state.OccurrenceNumber;\r\n var someDate = new Date(this.state.workOrderDueDate);\r\n switch (this.state.OccurrenceDelay) {\r\n case 'Weeks':\r\n OccurrenceNumber = this.state.OccurrenceNumber * 7;\r\n someDate.setDate(someDate.getDate() + parseInt(OccurrenceNumber));\r\n break;\r\n case 'Months':\r\n someDate.setMonth(someDate.getMonth() + parseInt(OccurrenceNumber));\r\n break;\r\n case 'Years':\r\n break;\r\n default:\r\n someDate.setDate(someDate.getDate() + parseInt(OccurrenceNumber));\r\n break;\r\n }\r\n var dd = someDate.getDate();\r\n var mm = someDate.getMonth() + 1;\r\n var y =\r\n this.state.OccurrenceDelay === 'Years'\r\n ? someDate.getFullYear() + parseInt(OccurrenceNumber)\r\n : someDate.getFullYear();\r\n\r\n var someFormattedDate = mm + '/' + dd + '/' + y;\r\n\r\n this.setState({ nextOccurenceDueDate: someFormattedDate });\r\n };\r\n\r\n UpdateOccurrenceNumber = (evt) => {\r\n this.setState({\r\n OccurrenceNumber: evt.target.value,\r\n });\r\n setTimeout(() => {\r\n this.__getNextDueDate();\r\n }, 20);\r\n };\r\n UpdateOccurrenceDelay = (evt) => {\r\n this.setState({\r\n OccurrenceDelay: evt.target.value,\r\n });\r\n setTimeout(() => {\r\n this.__getNextDueDate();\r\n }, 20);\r\n };\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n //console.log(res);\r\n var departmentOptions = this.state.departmentOptions;\r\n res.data.map((d) => {\r\n departmentOptions.push({\r\n value: d.departmentID,\r\n label: d.name,\r\n });\r\n });\r\n this.setState({ departments: res.data, departmentOptions });\r\n const GISAssets = this.state.GISAssets;\r\n const { feature } = this.props;\r\n this.__initAddressAndSketchModelView();\r\n // set default asset\r\n if (feature) {\r\n // check for gisAsset proporty\r\n if (\r\n feature.hasOwnProperty('gisAsset') &&\r\n feature.gisAsset !== null\r\n ) {\r\n// console.log(feature);\r\n GISAssets.push(feature.gisAsset);\r\n const assetDepartment = this.state.departments.find(\r\n (d) => d.name === feature.DepartmentName\r\n );\r\n this.__GetUsersAndServicesByDepartment(assetDepartment.name);\r\n this.__GetProblemsByDepartment(assetDepartment.name);\r\n\r\n if (GISAssets.length > 0) {\r\n setTimeout(() => {\r\n this.setState({\r\n GISAssets,\r\n workAssetDetails:\r\n GISAssets.length > 0\r\n ? `for asset ${GISAssets[0].facilityID}`\r\n : '',\r\n departmentID: assetDepartment.departmentID,\r\n selectedDepartment: {\r\n value: assetDepartment.departmentID,\r\n label: assetDepartment.name,\r\n },\r\n });\r\n this.handleWorkCreationFromURL(feature.feature.geometry);\r\n }, 200);\r\n }\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n __GetUsersAndServicesByDepartment = (department) => {\r\n const dep = this.state.departments.find((d) => d.name === department);\r\n CrudOperations.GetServicesByDepartment(dep.departmentID).then((assets) => {\r\n var GISServices = this.state.GISServices;\r\n GISServices = [];\r\n assets.data.map((s, index) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n departmentID: s.departmentID,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n this.setState({\r\n GISServices,\r\n selectedDepartment: { value: dep.departmentID, label: dep.name },\r\n departmentID: dep.departmentID,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(department);\r\n });\r\n };\r\n\r\n __GetProblemsByDepartment = (department) => {\r\n const dep = this.state.departments.find((d) => d.name === department);\r\n CrudOperations.GetServicesByDepartment(dep.departmentID).then((assets) => {\r\n var GISServices = this.state.GISServices;\r\n GISServices = [];\r\n assets.data.map((s, index) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n departmentID: s.departmentID,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n this.setState({\r\n GISServices,\r\n selectedDepartment: { value: dep.departmentID, label: dep.name },\r\n departmentID: dep.departmentID,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(department);\r\n });\r\n };\r\n\r\n __toggleCreationLoader = () => {\r\n const __loaders = document.getElementsByClassName('work-create-loading');\r\n for (let i = 0; i < __loaders.length; i++) {\r\n if (__loaders[i].classList.contains('work-creation-loader')) {\r\n __loaders[i].classList.remove('work-creation-loader');\r\n } else {\r\n __loaders[i].classList.add('work-creation-loader');\r\n }\r\n }\r\n };\r\n\r\n renderWorkAssigned() {\r\n if (this.state.isWorkAssigned) {\r\n return (\r\n \r\n \r\n this.__handleAssignWorkToChange(e)}\r\n options={this.state.GISUsers}\r\n >\r\n \r\n Please provide work responsible.\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n __toggleLocationActiveStatus = () => {\r\n const _btn_Location = document.getElementById('btn-location-getter');\r\n _btn_Location.classList.toggle('map-click-location');\r\n };\r\n\r\n toggleLocationBtn = (e) => {\r\n e.preventDefault();\r\n this.__toggleLocationActiveStatus();\r\n setTimeout(() => {\r\n const _btn_Location = document.getElementById('btn-location-getter');\r\n if (_btn_Location.classList.contains('map-click-location')) {\r\n document.getElementById('mapId').style.cursor = 'crosshair';\r\n this.__handleMapClickedForLocation();\r\n }\r\n }, 10);\r\n };\r\n\r\n __handleNewWorkLocationAndAddress = (locationPoint) => {\r\n const view = workorderService.mapView();\r\n // show event creation loader\r\n this.__toggleCreationLoader();\r\n workorderService\r\n .GetAddressFromLocation(view, locationPoint)\r\n .then((geocoderresult) => {\r\n const { Address } = geocoderresult.data.address;\r\n this.setState({\r\n NewWorkOrderAddress: Address,\r\n IsNewWorkAttributesVisible: true,\r\n });\r\n view.popup.close();\r\n setTimeout(() => {\r\n this.__toggleCreationLoader();\r\n }, 25);\r\n });\r\n };\r\n\r\n handleWorkCreationFromURL = (locationPoint) => {\r\n const workCreateLocationGL = this.state.view.map.findLayerById(\r\n 'workCreateLocationGL'\r\n );\r\n workCreateLocationGL.removeAll();\r\n loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n this.__toggleCreationLoader();\r\n const view = workorderService.mapView();\r\n workorderService.GetAddressFromLocation(view).then((geocoderresult) => {\r\n const { Address } = geocoderresult.data.address;\r\n\r\n this.setState({\r\n NewWorkOrderAddress: Address,\r\n IsNewWorkAttributesVisible: true,\r\n NewWorkOrderGraphic: new Graphic(view.popup.location),\r\n });\r\n\r\n var marker = {\r\n type: 'simple-marker',\r\n outline: { width: 2, color: [253, 51, 51, 1] },\r\n size: 25,\r\n color: [224, 95, 95, 0.25],\r\n };\r\n\r\n var gr = new Graphic(view.popup.location, marker);\r\n workCreateLocationGL.add(gr);\r\n this.state.SketchModel.update(gr);\r\n\r\n view.popup.close();\r\n setTimeout(() => {\r\n this.__toggleCreationLoader();\r\n }, 25);\r\n });\r\n });\r\n };\r\n\r\n __handleMapClickedForLocation = () => {\r\n const { view } = this.state;\r\n const handler = view.on('click', (event) => {\r\n handler.remove();\r\n event.stopPropagation();\r\n\r\n if (event.mapPoint) {\r\n let point = event.mapPoint.clone();\r\n point.z = undefined;\r\n point.hasZ = false;\r\n\r\n //this.__handleNewWorkLocationAndAddress(point);\r\n } else {\r\n console.error('event.mapPoint is not defined');\r\n }\r\n });\r\n };\r\n\r\n __SelectUserConfiguredTopAsset = () => { //THIS CODE IS NO LONGER REFERENCED - CHANGED BY DMM 10/27/2022 FOR TRYING TOO HARD!\r\n if (this.state.GISRestServices.length > 0) {\r\n // check for selected Service\r\n var __settingsObj = workorderService.GetUserAppSettings();\r\n if (__settingsObj === '' || __settingsObj === null) {\r\n // select top first\r\n const defaultAsset = this.state.GISRestServices[0];\r\n this.setState({\r\n selectedGISAsset: {\r\n label: defaultAsset.name,\r\n value: defaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n } else {\r\n // select user top layer\r\n const userDefaultAsset = this.state.GISRestServices.find(\r\n (a) => a.gisServicesConfigurationID === __settingsObj.mostTopLayerID\r\n );\r\n this.setState({\r\n selectedGISAsset: {\r\n label: userDefaultAsset.name,\r\n value: userDefaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const { label, value } = this.state.selectedGISAsset;\r\n this.OnAssetSelectionChange({ label, value });\r\n }, 200);\r\n }\r\n };\r\n\r\n _renderServicesOptions = () => {\r\n return (\r\n \r\n {this.state.GISServices.map((s, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n _renderProblemsOptions = () => {\r\n return (\r\n \r\n {this.state.GISProblems.map((s, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n _renderUsersOptions = () => {\r\n return (\r\n \r\n {this.state.GISUsers.map((u, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n __initAddressAndSketchModelView = () => {\r\n const view = workorderService.mapView();\r\n loadModules([\r\n 'esri/widgets/Sketch/SketchViewModel',\r\n 'esri/widgets/Sketch',\r\n 'esri/widgets/Search',\r\n 'esri/Graphic',\r\n ]).then(([SketchViewModel, Sketch, Search, Graphic]) => {\r\n const workCreateLocationGL = view.map.findLayerById(\r\n 'workCreateLocationGL'\r\n );\r\n\r\n var marker = {\r\n type: 'simple-marker',\r\n outline: { width: 2, color: [253, 51, 51, 1] },\r\n size: 25,\r\n color: [224, 95, 95, 0.25],\r\n };\r\n\r\n view.when(() => {\r\n const sketch = new SketchViewModel({\r\n view,\r\n layer: workCreateLocationGL,\r\n pointSymbol: marker,\r\n updateOnGraphicClick: true,\r\n snappingOptions: {\r\n enabled: false,\r\n },\r\n });\r\n\r\n sketch.on('create', (e) => {\r\n if (e.graphic) {\r\n e.graphic.symbol = marker;\r\n if (e.state.toLowerCase() === 'complete') {\r\n this.setState({\r\n WorkOrderGeometry: e.graphic.geometry,\r\n NewWorkOrderGraphic: new Graphic(e.graphic.geometry),\r\n sketchDisplay: 'none',\r\n });\r\n this.__handleNewWorkLocationAndAddress(\r\n this.state.WorkOrderGeometry\r\n );\r\n //setTimeout(() => {\r\n //console.log(this.state.selectedDepartment);\r\n /* this.__GetUsersAndServicesByDepartment(\r\n this.state.selectedDepartment.label\r\n ); */\r\n // set default asset\r\n \r\n/* setTimeout(() => { .//REMOVED BY DMM 10/27/2022\r\n this.__SelectUserConfiguredTopAsset();\r\n }, 50); */\r\n\r\n }\r\n }\r\n //sketch.create('point');\r\n });\r\n\r\n sketch.on('update', (e) => {\r\n this.setState({\r\n WorkOrderGeometry: e.graphics[0].geometry,\r\n NewWorkOrderGraphic: new Graphic(e.graphics[0].geometry),\r\n });\r\n });\r\n\r\n // search\r\n const locationSearch = new Search({\r\n view: view,\r\n container: 'sketch-address-search',\r\n allPlaceholder: 'Find work order address',\r\n });\r\n\r\n locationSearch.on('select-result', (evt) => {\r\n workCreateLocationGL.removeAll();\r\n const { Address, StAddr } = evt.result.target.attributes;\r\n this.setState({\r\n WorkOrderGeometry: evt.result.target.geometry.centroid,\r\n NewWorkOrderAddress: StAddr,\r\n IsNewWorkAttributesVisible: true,\r\n NewWorkOrderGraphic: new Graphic(\r\n evt.result.target.geometry.centroid\r\n ),\r\n sketchDisplay: 'none',\r\n });\r\n\r\n var gr = new Graphic(this.state.WorkOrderGeometry, marker);\r\n workCreateLocationGL.add(gr);\r\n sketch.update(gr);\r\n });\r\n\r\n setTimeout(() => {\r\n let sketchDisplay =\r\n this.state.GISAssets.length > 0 ? 'none' : 'block';\r\n this.setState({\r\n SketchModel: sketch,\r\n isUILoading: false,\r\n sketchDisplay,\r\n });\r\n }, 200);\r\n });\r\n\r\n /* const sketch = new Sketch({\r\n id: 'sketch-work-create',\r\n layer: workCreateLocationGL,\r\n view: view,\r\n container: 'sketch-view-model',\r\n availableCreateTools: ['point'],\r\n creationMode: 'update',\r\n pointSymbol: marker,\r\n visibleElements: {\r\n selectionTools: {\r\n 'lasso-selection': false,\r\n 'rectangle-selection': false,\r\n },\r\n settingsMenu: false,\r\n undoRedoMenu: false,\r\n },\r\n }); */\r\n });\r\n };\r\n\r\n SetWorkType = (e) => {\r\n const { departmentID, label, value } = e;\r\n const dept = this.state.departments.find(\r\n (d) => d.departmentID === departmentID\r\n );\r\n this.setState({\r\n selectedDepartment: { value: departmentID, label: dept.name },\r\n selectedWorkType: e,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(dept.name);\r\n };\r\n\r\n \r\n __getUsersByDepartmentWithActiveWorkTally = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n // populate users from same department\r\n let GISUsers = [];\r\n users.data.map((user, index) => {\r\n workorderService.GetUserWorkSummary(user.id).then((summary) => {\r\n const { totalWorkOrders, activeWorkOrders, unassignedWorkOrders } =\r\n summary.data;\r\n\r\n GISUsers.push({\r\n value: user.id,\r\n label: `${user.firstName} ${user.lastName} - ${activeWorkOrders}`,\r\n department: user.department,\r\n });\r\n this.setState({\r\n GISUsers,\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n SetWorkAssignedTo = (e) => {\r\n const { value, label } = e;\r\n this.setState({ workAssignedToUserObj: { value, label } });\r\n };\r\n __UpdateUsersAndServicesByDepartment = (e) => {\r\n //console.log(e);\r\n /* this.setState({\r\n selectedDepartment: { value: e.value, label: e.label },\r\n departmentID: e.value,\r\n }); */\r\n // reload users for selected department\r\n //this.__getUsersByDepartmentWithActiveWorkTally(e.label);\r\n this.__GetUsersAndServicesByDepartment(e.label);\r\n // reload worktypes for selected department\r\n };\r\n\r\n CancelWorkCreation = () => {\r\n this.state.GISAssets.length=0;\r\n// this.setState({GISAssets:[]});\r\n const workCreateLocationGL = this.state.view.map.findLayerById(\r\n 'workCreateLocationGL'\r\n );\r\n workCreateLocationGL.removeAll();\r\n workorderService.SetAppInAddingAssets(false);\r\n\r\n this.state.view.graphics.removeAll();\r\n this.props.renderComponent('');\r\n };\r\n\r\n __createNewWork = () => {\r\n const {\r\n view,\r\n departments,\r\n selectedWorkType,\r\n selectedProblemType,\r\n SelectedGISAsset,\r\n workAssignedToUserObj,\r\n NewWorkOrderAddress,\r\n workOrderDueDate,\r\n workDescription,\r\n User,\r\n IsReccurrence,\r\n OccurrenceNumber,\r\n OccurrenceDelay,\r\n nextOccurenceDueDate,\r\n NewWorkOrderGraphic,\r\n } = this.state;\r\n workorderService.SetAppInAddingAssets(false);\r\n\r\n if (NewWorkOrderAddress === '') {\r\n swal('Please provide required location address');\r\n return;\r\n }\r\n if (SelectedGISAsset === null) {\r\n swal('Please select an asset');\r\n return;\r\n }\r\n if (selectedWorkType === null) {\r\n swal('Please select work type');\r\n return;\r\n }\r\n if (workDescription === '') {\r\n swal('Please provide required description for this work.');\r\n return;\r\n }\r\n this.setState({ isSubmittingWork: true });\r\n const workCreateLocationGL = view.map.findLayerById('workCreateLocationGL');\r\n\r\n const __IsWorkAssigned = workAssignedToUserObj === null ? false : true;\r\n\r\n const __workAssignedTo = __IsWorkAssigned\r\n ? workAssignedToUserObj.label.split('-')[0].trim()\r\n : 'Unassigned';\r\n const __workAssignedToUID = __IsWorkAssigned\r\n ? workAssignedToUserObj.value\r\n : '';\r\n\r\n var selectedDate = new Date(workOrderDueDate).toGMTString();\r\n var __esri_date = selectedDate;\r\n\r\n const department = departments.find(\r\n (d) => d.departmentID === SelectedGISAsset.departmentID\r\n );\r\n\r\n const attributes = {\r\n OriginatorID: `${User.firstName} ${User.lastName}`, //`${this.state.User.id}`,\r\n OriginatorUID: `${User.id}`,\r\n Status: __IsWorkAssigned ? 'Assigned' : 'Unassigned',\r\n IsWorkAssigned: __IsWorkAssigned ? 1 : 0,\r\n DepartmentName: department.name,\r\n DateInitiated: workorderService.__getEpochTime(new Date().getTime()),\r\n LocationAddress: NewWorkOrderAddress,\r\n Description: workDescription,\r\n AssignedToID: __workAssignedTo,\r\n AssignedToUID: __workAssignedToUID,\r\n WorkType: selectedWorkType.label,\r\n ProblemName: selectedProblemType === null ? '' : selectedProblemType.label,\r\n ProblemID: selectedProblemType === null ? 0 : selectedProblemType.value,\r\n ResolutionName: '',\r\n ResolutionID: 0,\r\n AssetName: SelectedGISAsset.name,\r\n AssetID: SelectedGISAsset.gisServicesConfigurationID,\r\n PlannedDate: workorderService.__getEpochTime(\r\n new Date(__esri_date).getTime()\r\n ),\r\n IsRecurring: IsReccurrence,\r\n Recurrence:\r\n IsReccurrence === 'Yes'\r\n ? `Occurs every ${OccurrenceNumber} ${OccurrenceDelay}`\r\n : null,\r\n NextDueDate: IsReccurrence === 'Yes' ? nextOccurenceDueDate : null,\r\n WOID: 0,\r\n workServiceID: selectedWorkType.value,\r\n DepartmentID: department.departmentID,\r\n XCOORD: NewWorkOrderGraphic.geometry.x,\r\n YCOORD: NewWorkOrderGraphic.geometry.y,\r\n };\r\n\r\n let featureGraphique = NewWorkOrderGraphic;\r\n featureGraphique.attributes = attributes;\r\n\r\n const edits = {\r\n addFeatures: [featureGraphique],\r\n };\r\n workorderService.ApplyWorkOrderEdits(edits).then((res) => {\r\n if (res.addFeatureResults.length > 0) {\r\n //[2] Add created work to backend server\r\n var workOrderQuestionAnswers = [];\r\n\r\n if (selectedWorkType.essentialQuestions.length > 0) {\r\n for (\r\n let index = 0;\r\n index < selectedWorkType.essentialQuestions.length;\r\n index++\r\n ) {\r\n const question = selectedWorkType.essentialQuestions[index];\r\n workOrderQuestionAnswers.push({\r\n workServiceID: selectedWorkType.value,\r\n essentialQuestionID: question.essentialQuestionID,\r\n answer: 'Details required',\r\n });\r\n }\r\n }\r\n\r\n const _workOrderObj = {\r\n globalID: res.addFeatureResults[0].globalId,\r\n assignedToUID: __workAssignedToUID,\r\n departmentID: department.departmentID,\r\n workOrderType: selectedWorkType.label,\r\n status: attributes.Status,\r\n workServiceID: selectedWorkType.value,\r\n workAssignedTo: __workAssignedTo,\r\n isWorkAssigned: __IsWorkAssigned,\r\n workCreatedBy: `${User.firstName} ${User.lastName}`,\r\n originatorUID: attributes.OriginatorUID,\r\n plannedDate: new Date(workOrderDueDate),\r\n workOrderGISAsset: {\r\n gisServicesConfigurationID:\r\n SelectedGISAsset.gisServicesConfigurationID,\r\n },\r\n gisAssets: this.state.GISAssets,\r\n workOrderQuestionAnswers: workOrderQuestionAnswers,\r\n isRecurring: IsReccurrence,\r\n recurrence:\r\n this.state.IsReccurrence === 'Yes' ? attributes.Recurrence : null,\r\n nextDueDate:\r\n this.state.IsReccurrence === 'Yes'\r\n ? new Date(attributes.NextDueDate)\r\n : new Date(),\r\n LocationAddress: attributes.LocationAddress,\r\n Description: attributes.Description,\r\n AssetName: attributes.AssetName,\r\n AssetID: attributes.AssetID,\r\n DepartmentName: attributes.DepartmentName,\r\n ProblemName: selectedProblemType === null ? '' : selectedProblemType.label,\r\n ProblemID: selectedProblemType === null ? 0 : selectedProblemType.value,\r\n// ProblemName: selectedProblemType.label, // DMM 12/22/2022\r\n// ProblemID: selectedProblemType.value, // DMM 12/22/2022\r\n ResolutionName:'',\r\n ResolutionID:0,\r\n FieldNotes: '',\r\n Recurrence:'',\r\n xcoord: attributes.XCOORD,\r\n ycoord: attributes.YCOORD,\r\n// xcoord: 3.14,\r\n// ycoord: 6.28,\r\n };\r\n workorderService\r\n .CreateServerWorkOrder(_workOrderObj)\r\n .then(async (serverResponse) => {\r\n // update the feature class with woid id\r\n // [1] query the new created feature using the globalID => res.addFeatureResults[0].globalId\r\n const __newly_created_feature =\r\n await workorderService.SelectFeatureByGlobalID(\r\n res.addFeatureResults[0].globalId\r\n );\r\n let __new__feature = __newly_created_feature.features[0];\r\n\r\n // update the work orderID with ID from SQL Server => serverResponse.data.workOrderID\r\n Object.keys(__new__feature.attributes).map((fieldName) => {\r\n switch (fieldName) {\r\n case 'WOID':\r\n __new__feature.attributes[fieldName] =\r\n serverResponse.data.workOrderID;\r\n break;\r\n }\r\n });\r\n // make the new GIS feature object\r\n const __update__feature__class = {\r\n updateFeatures: [__new__feature],\r\n };\r\n\r\n // call the update attributes\r\n workorderService\r\n .ApplyWorkOrderEdits(__update__feature__class)\r\n .then((res) => {\r\n workCreateLocationGL.removeAll();\r\n this.state.view.graphics.removeAll();\r\n this.props.renderComponent('');\r\n });\r\n })\r\n .catch((err) =>\r\n console.log('Error creating server work order :: ', err)\r\n );\r\n }\r\n });\r\n };\r\n\r\n handleAddWorkLocationOnMap = () => {\r\n var IslocationBtnActive = this.state.locationBtnActive;\r\n this.setState({ locationBtnActive: !IslocationBtnActive });\r\n\r\n setTimeout(() => {\r\n if (this.state.locationBtnActive) {\r\n this.state.SketchModel.create('point');\r\n } else {\r\n this.state.SketchModel.cancel();\r\n }\r\n }, 20);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n {this.state.IsNewWorkAttributesVisible && (\r\n <>\r\n \r\n {this.state.isSubmittingWork && (\r\n \r\n )}\r\n {!this.state.isSubmittingWork && (\r\n \r\n )}\r\n \r\n \r\n Create Work\r\n \r\n \r\n )}\r\n Create\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n {this.state.isUILoading && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n

    Work order location

    \r\n
    \r\n
    \r\n
    \r\n this.handleAddWorkLocationOnMap()}\r\n >\r\n \r\n \r\n
    \r\n {/*
    */}\r\n
    \r\n
    \r\n \r\n Click on the location icon and then click on the desired\r\n location on the map...\r\n \r\n
    \r\n
    \r\n

    ...or enter address

    \r\n
    \r\n
    \r\n\r\n {this.state.IsNewWorkAttributesVisible && (\r\n \r\n
    \r\n
    \r\n \r\n Please provide work information{' '}\r\n {this.state.workAssetDetails}\r\n

    \r\n {this.state.isAddingMoreAssets && (\r\n
    \r\n \r\n add assets from the map and they will be displayed\r\n below:\r\n \r\n
    \r\n
      \r\n {this.state.GISAssets.map((asset, index) => (\r\n
    1. \r\n {asset.facilityID} -{' '}\r\n {asset.assetName.split('|')[0]}\r\n
    2. \r\n ))}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n {/* Work order form */}\r\n \r\n
    \r\n \r\n \r\n this.setState({\r\n NewWorkOrderAddress: e.target.value,\r\n })\r\n }\r\n className=\"form-control\"\r\n id=\"inputAddress\"\r\n required\r\n />\r\n
    \r\n Please provide location address\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Asset\r\n \r\n this.OnAssetSelectionChange(e)}\r\n options={this.state.GISRestServicesOptions}\r\n >\r\n
    \r\n\r\n
    \r\n \r\n this.OnWorkTypeSelectionChange(e)}\r\n options={this.state.GISServices}\r\n >\r\n
    \r\n Please select work type\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n this.OnProblemTypeSelectionChange(e)}\r\n options={this.state.GISProblems}\r\n >\r\n
    \r\n Please select Problem type\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Assign Work To\r\n \r\n this.SetWorkAssignedTo(e)}\r\n options={this.state.WorkAssignedToUsersOptions}\r\n ariadescribedby=\"assignedToHelp\"\r\n >\r\n \r\n If unselected, this work will be unassigned.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n this.setState({\r\n workOrderDueDate: e.target.value,\r\n })\r\n }\r\n />\r\n
    \r\n\r\n
    \r\n \r\n Work Description\r\n \r\n \r\n this.setState({ workDescription: e.target.value })\r\n }\r\n required\r\n >\r\n
    \r\n Please provide required description for this work.\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n this.setState({ IsReccurrence: e.target.value })\r\n }\r\n >\r\n \r\n \r\n \r\n
    \r\n {this.state.IsReccurrence === 'Yes' && (\r\n
    \r\n \r\n \r\n \r\n \r\n this.UpdateOccurrenceNumber(e)\r\n }\r\n />\r\n \r\n \r\n \r\n this.UpdateOccurrenceDelay(e)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.nextOccurenceDueDate !== '' && (\r\n

    \r\n The next due date is:{' '}\r\n {this.state.nextOccurenceDueDate}\r\n

    \r\n )}\r\n
    \r\n )}\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {/* {this.renderNewWorkOrderUI()} */}\r\n \r\n \r\n \r\n \r\n You are in the process of creating a new work order\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CreateWorkOrder;\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { Component, Fragment } from 'react';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport Select from 'react-select';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Col,\r\n Input,\r\n Label,\r\n Row,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport Spinner from '../Spinner';\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n overflowX: 'hidden',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n color: '#fff',\r\n};\r\n\r\nclass LogWork extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n locationBtnActive: false,\r\n User: null,\r\n AssignedToUID: '',\r\n SRCUsers: [],\r\n GISServices: [],\r\n GISServicesType: [],\r\n GISServicesTypes: [],\r\n GISAssets: [],\r\n GISRestServices: [],\r\n GISRestServicesOptions: [],\r\n GISProblems: [],\r\n GISProblemsType: [],\r\n GISProblemsTypes: [],\r\n GISResolutions: [],\r\n GISResolutionsType: [],\r\n GISResolutionsTypes: [],\r\n WorkAssignedToUser: null,\r\n WorkAssignedToUsersOptions: [],\r\n SelectedGISAsset: null,\r\n SelectedWorkType: null,\r\n SelectedProblemType: null,\r\n SelectedResolutionType: null,\r\n SelectedUserAssignedTo: null,\r\n essentialQuestions: null,\r\n GISUsers: [],\r\n WorkAssignedTo: '',\r\n globalID: '',\r\n departmentID: 0,\r\n selectedDepartment: null,\r\n workOrderType: '',\r\n workServiceID: 0,\r\n highlight: null,\r\n view: null,\r\n ismappingNewWork: false,\r\n NewWorkOrderGraphic: null,\r\n NewWorkOrderAddress: null,\r\n IsNewWorkAttributesVisible: false,\r\n isAssetBasedWork: false,\r\n isWorkAddressFound: false,\r\n isSubmittingWork: false,\r\n SketchModel: null,\r\n WorkOrderGeometry: null,\r\n isUILoading: true,\r\n workAssetDetails: '',\r\n sketchDisplay: 'none',\r\n departments: [],\r\n workOrderDueDate: null,\r\n workDescription: '',\r\n workTypeOptions: [],\r\n departmentOptions: [],\r\n assignedToOptions: [],\r\n workAssignedToUserObj: null,\r\n selectedWorkType: null,\r\n selectedProblemType: null,\r\n selectedResolutionType: null,\r\n selectedWorkAsset: null,\r\n IsReccurrence: 'No',\r\n OccurrenceNumber: 1,\r\n OccurrenceDelay: 'Days',\r\n nextOccurenceDueDate: '',\r\n isAddingMoreAssets: false,\r\n selectedGISAsset: null,\r\n ProblemName: '',\r\n ResolutionName: '',\r\n ProblemID: 0,\r\n ResolutionID: 0,\r\n DateRequired: null,\r\n DateCompleted: null,\r\n LocationAddress: null,\r\n Description: null,\r\n FieldNotes: null,\r\n AssetName: null,\r\n AssetID: null,\r\n DepartmentName: null,\r\n };\r\n }\r\n\r\n __getGISAssets = async () => {\r\n try {\r\n const loggedUser = getLoggedInUser();\r\n const __user = await UserAPI.GetUser(loggedUser.id);\r\n\r\n const view = workorderService.mapView();\r\n var curr = new Date();\r\n //curr.setDate(curr.getDate() + 3);\r\n var workOrderDueDate = curr.toISOString().substr(0, 10);\r\n\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n const departmentData = await CrudOperations.Get('Departments');\r\n const GISServicesTypes = await CrudOperations.Get('Services');\r\n const GISProblemsTypes = await CrudOperations.Get('ProblemResolutions');\r\n\r\n const departments = departmentData.data;\r\n // Get departmentID\r\n const userDepartment = departments.find(\r\n ({ name }) => name === loggedUser.department\r\n );\r\n\r\n var __gis__assets = data;\r\n var __gis__services = GISServicesTypes.data;\r\n var __gis__problems = GISProblemsTypes.data.problems;\r\n var __gis__resolutions = GISProblemsTypes.data.resolutions;\r\n\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === userDepartment.departmentID\r\n );\r\n\r\n if (__gis__assets.length < 1) {\r\n swal(\r\n `There are no asset defined for department ${loggedUser.department}. Please make sure to add GIS Services before creating work order.`\r\n );\r\n this.props.renderComponent('');\r\n return;\r\n }\r\n __gis__services = __gis__services.filter(\r\n (s) =>\r\n s.gisService.getGISService.departmentID ===\r\n userDepartment.departmentID\r\n );\r\n __gis__problems = __gis__problems.filter(\r\n (s) =>\r\n s.problemAsset.getGISService.departmentID ===\r\n userDepartment.departmentID\r\n );\r\n __gis__resolutions = __gis__resolutions.filter(\r\n (s) =>\r\n s.resolutionAsset.getGISService.departmentID ===\r\n userDepartment.departmentID\r\n );\r\n\r\n }\r\n const GISRestServicesOptions = [];\r\n // console.log(__gis__assets);\r\n __gis__assets.map((o) => {\r\n GISRestServicesOptions.push({\r\n value: o.gisServicesConfigurationID,\r\n label: o.name,\r\n users: o.gisServicesUsersConfigurations,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISRestServices: __gis__assets,\r\n GISRestServicesOptions,\r\n GISServicesTypes: __gis__services,\r\n GISProblemsTypes: __gis__problems,\r\n GISResolutionsTypes: __gis__resolutions,\r\n departments,\r\n IsReccurrence: 'No',\r\n view,\r\n workOrderDueDate,\r\n User: __user.data,\r\n });\r\n\r\n setTimeout(() => {\r\n // this.__configureServicesSelection();\r\n this.__configureServicesProblemsSelection();\r\n }, 500);\r\n return Promise.resolve(this.state.view)\r\n } catch (error) {\r\n return Promise.reject(error)\r\n }\r\n };\r\n\r\n __configureServicesSelection = () => { //REPLACED WITH _configureServicesProblemsSelection 12/22/2022 DMM\r\n const GISServices = [];\r\n this.state.GISServicesType.map((s) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISServices,\r\n });\r\n };\r\n\r\n __configureServicesProblemsSelection = () => {\r\n const GISServices = [];\r\n const GISProblems = [];\r\n const GISResolutions = [];\r\n this.state.GISServicesType.map((s) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n\r\n this.state.GISProblemsType.map((s) => {\r\n GISProblems.push({\r\n value: s.problemID,\r\n label: s.name,\r\n description: s.description,\r\n });\r\n });\r\n\r\n this.state.GISResolutionsType.map((s) => {\r\n GISResolutions.push({\r\n value: s.resolutionID,\r\n label: s.name,\r\n description: s.description,\r\n });\r\n });\r\n\r\n this.setState({\r\n GISServices,\r\n GISProblems,\r\n GISResolutions,\r\n });\r\n };\r\n/*\r\n componentDidMount() {\r\n this.__getGISAssets();\r\n setTimeout(() => {\r\n this.__initAddressAndSketchModelView();\r\n this.__initWorkLogSteps();\r\n }, 500);\r\n }\r\n*/\r\n componentDidMount() {\r\n this.__getGISAssets()\r\n .then(() => this.__initAddressAndSketchModelView())\r\n .then(() => this.__initWorkLogSteps());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n // destroy the draw tool\r\n if (this.state.SketchModel) {\r\n this.state.SketchModel.destroy();\r\n }\r\n }\r\n\r\n OnWorkTypeSelectionChange = (evt) => {\r\n //console.log(evt);\r\n\r\n //SelectedWorkType\r\n this.setState({ selectedWorkType: evt });\r\n };\r\n\r\n OnProblemTypeSelectionChange = (evt) => {\r\n //console.log(evt);\r\n\r\n //SelectedWorkType\r\n this.setState({ selectedProblemType: evt });\r\n };\r\n\r\n OnResolutionTypeSelectionChange = (evt) => {\r\n //console.log(evt);\r\n\r\n //SelectedWorkType\r\n this.setState({ selectedResolutionType: evt });\r\n };\r\n\r\n\r\n OnWorkUserAssignedSelectionChange = (evt) => {\r\n //SelectedUserAssignedTo\r\n// console.log(evt);\r\n };\r\n\r\n OnAssetSelectionChange = ({ label, value }) => {\r\n // value here is the gisServicesConfigurationID and label the name\r\n const selectedGISService = this.state.GISRestServices.find(\r\n (s) => s.gisServicesConfigurationID === value\r\n );\r\n\r\n const WorkAssignedToUser = null,\r\n WorkAssignedToUsersOptions = [];\r\n //console.log(selectedGISService);\r\n\r\n // update work type selection\r\n var GISServicesType = this.state.GISServicesTypes;\r\n var GISProblemsType = this.state.GISProblemsTypes;\r\n var GISResolutionsType = this.state.GISResolutionsTypes;\r\n\r\n GISServicesType = GISServicesType.filter(\r\n (t) => t.gisService.gisServicesConfigurationID === value\r\n );\r\n\r\n GISProblemsType = GISProblemsType.filter(\r\n (t) => t.problemAsset.gisServicesConfigurationID === value\r\n );\r\n\r\n GISResolutionsType = GISResolutionsType.filter(\r\n (t) => t.resolutionAsset.gisServicesConfigurationID === value\r\n );\r\n\r\n // update users choices\r\n if (selectedGISService.gisServicesUsersConfigurations.length > 0) {\r\n selectedGISService.gisServicesUsersConfigurations.map((u) => {\r\n const __user = u.user;\r\n WorkAssignedToUsersOptions.push({\r\n value: __user.id,\r\n label: `${__user.firstName} ${__user.lastName} - ${u.userWorkSummary.activeWorkOrders}`,\r\n department: __user.department,\r\n });\r\n });\r\n\r\n setTimeout(() => {\r\n this.setState({ WorkAssignedToUsersOptions });\r\n }, 50);\r\n }\r\n\r\n this.setState({\r\n GISServicesType,\r\n GISProblemsType,\r\n GISResolutionsType,\r\n SelectedGISAsset: selectedGISService,\r\n selectedGISAsset: {\r\n label: selectedGISService.name,\r\n value: selectedGISService.gisServicesConfigurationID,\r\n },\r\n });\r\n setTimeout(() => {\r\n// this.__configureServicesSelection();\r\n this.__configureServicesProblemsSelection();\r\n }, 500);\r\n };\r\n\r\n __initWorkLogSteps = () => { \r\n const { feature } = this.props;\r\n const GISAssets = [];\r\n if (feature) {\r\n if (feature.hasOwnProperty('gisAsset') && feature.gisAsset !== null) {\r\n GISAssets.push(feature.gisAsset);\r\n const assetDepartment = workorderService\r\n .GetApplicationDepartments()\r\n .find((d) => d.departmentID === feature.gisAsset.departmentID); \r\n if (GISAssets.length > 0) {\r\n setTimeout(() => {\r\n this.setState({\r\n GISAssets,\r\n workAssetDetails:\r\n GISAssets.length > 0\r\n ? `for asset ${GISAssets[0].facilityID}`\r\n : '',\r\n departmentID: assetDepartment.departmentID,\r\n });\r\n this.handleWorkCreationFromURL(feature.feature.geometry);\r\n\r\n // set selectedAsset\r\n const userDefaultAsset = this.state.GISRestServices.find(\r\n (a) => a.name === feature.gisAsset.sourceLayer\r\n );\r\n this.setState({\r\n selectedGISAsset: {\r\n label: userDefaultAsset.name,\r\n value: userDefaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n setTimeout(() => {\r\n const { label, value } = this.state.selectedGISAsset;\r\n this.OnAssetSelectionChange({ label, value });\r\n }, 200);\r\n }, 200);\r\n }\r\n }\r\n }\r\n };\r\n\r\n__getCaseSensitiveAttributeName = (fieldAliases, fieldName) => {\r\n for (var key in fieldAliases) { \r\n if (key.toUpperCase() === fieldName.toUpperCase()){\r\n return key;\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n //console.log(res);\r\n var departmentOptions = this.state.departmentOptions;\r\n res.data.map((d) => {\r\n departmentOptions.push({\r\n value: d.departmentID,\r\n label: d.name,\r\n });\r\n });\r\n this.setState({ departments: res.data, departmentOptions });\r\n const GISAssets = this.state.GISAssets;\r\n const { feature } = this.props;\r\n this.__initAddressAndSketchModelView();\r\n // set default asset\r\n if (feature) {\r\n // check for gisAsset proporty\r\n if (\r\n feature.hasOwnProperty('gisAsset') &&\r\n feature.gisAsset !== null\r\n ) {\r\n// console.log(feature);\r\n GISAssets.push(feature.gisAsset);\r\n const assetDepartment = this.state.departments.find(\r\n (d) => d.name === feature.DepartmentName\r\n );\r\n this.__GetUsersAndServicesByDepartment(assetDepartment.name);\r\n this.__GetProblemsByDepartment(assetDepartment.name);\r\n\r\n if (GISAssets.length > 0) {\r\n setTimeout(() => {\r\n this.setState({\r\n GISAssets,\r\n workAssetDetails:\r\n GISAssets.length > 0\r\n ? `for asset ${GISAssets[0].facilityID}`\r\n : '',\r\n departmentID: assetDepartment.departmentID,\r\n selectedDepartment: {\r\n value: assetDepartment.departmentID,\r\n label: assetDepartment.name,\r\n },\r\n });\r\n this.handleWorkCreationFromURL(feature.feature.geometry);\r\n }, 200);\r\n }\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n __GetUsersAndServicesByDepartment = (department) => {\r\n const dep = this.state.departments.find((d) => d.name === department);\r\n CrudOperations.GetServicesByDepartment(dep.departmentID).then((assets) => {\r\n var GISServices = this.state.GISServices;\r\n GISServices = [];\r\n assets.data.map((s, index) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n departmentID: s.departmentID,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n this.setState({\r\n GISServices,\r\n selectedDepartment: { value: dep.departmentID, label: dep.name },\r\n departmentID: dep.departmentID,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(department);\r\n });\r\n };\r\n\r\n __GetProblemsByDepartment = (department) => {\r\n const dep = this.state.departments.find((d) => d.name === department);\r\n CrudOperations.GetServicesByDepartment(dep.departmentID).then((assets) => {\r\n var GISServices = this.state.GISServices;\r\n GISServices = [];\r\n assets.data.map((s, index) => {\r\n GISServices.push({\r\n value: s.workServiceID,\r\n label: s.name,\r\n departmentID: s.departmentID,\r\n description: s.description,\r\n essentialQuestions: s.essentialQuestions,\r\n });\r\n });\r\n this.setState({\r\n GISServices,\r\n selectedDepartment: { value: dep.departmentID, label: dep.name },\r\n departmentID: dep.departmentID,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(department);\r\n });\r\n };\r\n\r\n __toggleCreationLoader = () => {\r\n const __loaders = document.getElementsByClassName('work-create-loading');\r\n for (let i = 0; i < __loaders.length; i++) {\r\n if (__loaders[i].classList.contains('work-creation-loader')) {\r\n __loaders[i].classList.remove('work-creation-loader');\r\n } else {\r\n __loaders[i].classList.add('work-creation-loader');\r\n }\r\n }\r\n };\r\n\r\n renderWorkAssigned() {\r\n if (this.state.isWorkAssigned) {\r\n return (\r\n \r\n \r\n this.__handleAssignWorkToChange(e)}\r\n options={this.state.GISUsers}\r\n >\r\n \r\n Please provide work responsible.\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n __toggleLocationActiveStatus = () => {\r\n const _btn_Location = document.getElementById('btn-location-getter');\r\n _btn_Location.classList.toggle('map-click-location');\r\n };\r\n\r\n toggleLocationBtn = (e) => {\r\n e.preventDefault();\r\n this.__toggleLocationActiveStatus();\r\n setTimeout(() => {\r\n const _btn_Location = document.getElementById('btn-location-getter');\r\n if (_btn_Location.classList.contains('map-click-location')) {\r\n document.getElementById('mapId').style.cursor = 'crosshair';\r\n this.__handleMapClickedForLocation();\r\n }\r\n }, 10);\r\n };\r\n\r\n __handleNewWorkLocationAndAddress = (locationPoint) => {\r\n const view = workorderService.mapView();\r\n // show event creation loader\r\n this.__toggleCreationLoader();\r\n workorderService\r\n .GetAddressFromLocation(view, locationPoint)\r\n .then((geocoderresult) => {\r\n const { Address } = geocoderresult.data.address;\r\n this.setState({\r\n NewWorkOrderAddress: Address,\r\n IsNewWorkAttributesVisible: true,\r\n });\r\n view.popup.close();\r\n setTimeout(() => {\r\n this.__toggleCreationLoader();\r\n }, 25);\r\n });\r\n };\r\n\r\n handleWorkCreationFromURL = (locationPoint) => {\r\n const workLogLocationGL = this.state.view.map.findLayerById(\r\n 'workLogLocationGL'\r\n );\r\n workLogLocationGL.removeAll();\r\n loadModules(['esri/Graphic']).then(([Graphic]) => {\r\n this.__toggleCreationLoader();\r\n const view = workorderService.mapView();\r\n workorderService.GetAddressFromLocation(view).then((geocoderresult) => {\r\n const { Address } = geocoderresult.data.address;\r\n\r\n this.setState({\r\n NewWorkOrderAddress: Address,\r\n IsNewWorkAttributesVisible: true,\r\n NewWorkOrderGraphic: new Graphic(view.popup.location),\r\n });\r\n\r\n var marker = {\r\n type: 'simple-marker',\r\n outline: { width: 2, color: [253, 51, 51, 1] },\r\n size: 25,\r\n color: [224, 95, 95, 0.25],\r\n };\r\n\r\n var gr = new Graphic(view.popup.location, marker);\r\n workLogLocationGL.add(gr);\r\n this.state.SketchModel.update(gr);\r\n\r\n view.popup.close();\r\n setTimeout(() => {\r\n this.__toggleCreationLoader();\r\n }, 25);\r\n });\r\n });\r\n };\r\n\r\n __handleMapClickedForLocation = () => {\r\n const { view } = this.state;\r\n const handler = view.on('click', (event) => {\r\n handler.remove();\r\n event.stopPropagation();\r\n\r\n if (event.mapPoint) {\r\n let point = event.mapPoint.clone();\r\n point.z = undefined;\r\n point.hasZ = false;\r\n\r\n //this.__handleNewWorkLocationAndAddress(point);\r\n } else {\r\n console.error('event.mapPoint is not defined');\r\n }\r\n });\r\n };\r\n\r\n __SelectUserConfiguredTopAsset = () => { //THIS CODE IS NO LONGER REFERENCED - CHANGED BY DMM 10/27/2022 FOR TRYING TOO HARD!\r\n if (this.state.GISRestServices.length > 0) {\r\n // check for selected Service\r\n var __settingsObj = workorderService.GetUserAppSettings();\r\n if (__settingsObj === '' || __settingsObj === null) {\r\n // select top first\r\n const defaultAsset = this.state.GISRestServices[0];\r\n this.setState({\r\n selectedGISAsset: {\r\n label: defaultAsset.name,\r\n value: defaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n } else {\r\n // select user top layer\r\n const userDefaultAsset = this.state.GISRestServices.find(\r\n (a) => a.gisServicesConfigurationID === __settingsObj.mostTopLayerID\r\n );\r\n this.setState({\r\n selectedGISAsset: {\r\n label: userDefaultAsset.name,\r\n value: userDefaultAsset.gisServicesConfigurationID,\r\n },\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const { label, value } = this.state.selectedGISAsset;\r\n this.OnAssetSelectionChange({ label, value });\r\n }, 200);\r\n }\r\n };\r\n\r\n _renderServicesOptions = () => {\r\n return (\r\n \r\n {this.state.GISServices.map((s, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n _renderProblemsOptions = () => {\r\n return (\r\n \r\n {this.state.GISProblems.map((s, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n _renderResolutionsOptions = () => {\r\n return (\r\n \r\n {this.state.GISResolutions.map((s, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n _renderUsersOptions = () => {\r\n return (\r\n \r\n {this.state.GISUsers.map((u, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n __initAddressAndSketchModelView = () => {\r\n const view = workorderService.mapView();\r\n loadModules([\r\n 'esri/widgets/Sketch/SketchViewModel',\r\n 'esri/widgets/Sketch',\r\n 'esri/widgets/Search',\r\n 'esri/Graphic',\r\n ]).then(([SketchViewModel, Sketch, Search, Graphic]) => {\r\n const workLogLocationGL = view.map.findLayerById(\r\n 'workLogLocationGL'\r\n );\r\n\r\n var marker = {\r\n type: 'simple-marker',\r\n outline: { width: 2, color: [253, 51, 51, 1] },\r\n size: 25,\r\n color: [224, 95, 95, 0.25],\r\n };\r\n\r\n view.when(() => {\r\n const sketch = new SketchViewModel({\r\n view,\r\n layer: workLogLocationGL,\r\n pointSymbol: marker,\r\n updateOnGraphicClick: true,\r\n snappingOptions: {\r\n enabled: false,\r\n },\r\n });\r\n\r\n sketch.on('create', (e) => {\r\n if (e.graphic) {\r\n e.graphic.symbol = marker;\r\n if (e.state.toLowerCase() === 'complete') {\r\n this.setState({\r\n WorkOrderGeometry: e.graphic.geometry,\r\n NewWorkOrderGraphic: new Graphic(e.graphic.geometry),\r\n sketchDisplay: 'none',\r\n });\r\n this.__handleNewWorkLocationAndAddress(\r\n this.state.WorkOrderGeometry\r\n );\r\n //setTimeout(() => {\r\n //console.log(this.state.selectedDepartment);\r\n /* this.__GetUsersAndServicesByDepartment(\r\n this.state.selectedDepartment.label\r\n ); */\r\n // set default asset\r\n \r\n/* setTimeout(() => { .//REMOVED BY DMM 10/27/2022\r\n this.__SelectUserConfiguredTopAsset();\r\n }, 50); */\r\n\r\n }\r\n }\r\n //sketch.create('point');\r\n });\r\n\r\n sketch.on('update', (e) => {\r\n this.setState({\r\n WorkOrderGeometry: e.graphics[0].geometry,\r\n NewWorkOrderGraphic: new Graphic(e.graphics[0].geometry),\r\n });\r\n });\r\n\r\n // search\r\n const locationSearch = new Search({\r\n view: view,\r\n container: 'sketch-address-search',\r\n allPlaceholder: 'Find work order address',\r\n });\r\n\r\n locationSearch.on('select-result', (evt) => {\r\n workLogLocationGL.removeAll();\r\n const { Address, StAddr } = evt.result.target.attributes;\r\n this.setState({\r\n WorkOrderGeometry: evt.result.target.geometry.centroid,\r\n NewWorkOrderAddress: StAddr,\r\n IsNewWorkAttributesVisible: true,\r\n NewWorkOrderGraphic: new Graphic(\r\n evt.result.target.geometry.centroid\r\n ),\r\n sketchDisplay: 'none',\r\n });\r\n\r\n var gr = new Graphic(this.state.WorkOrderGeometry, marker);\r\n workLogLocationGL.add(gr);\r\n sketch.update(gr);\r\n });\r\n\r\n setTimeout(() => {\r\n let sketchDisplay =\r\n this.state.GISAssets.length > 0 ? 'none' : 'block';\r\n this.setState({\r\n SketchModel: sketch,\r\n isUILoading: false,\r\n sketchDisplay,\r\n });\r\n }, 200);\r\n });\r\n\r\n /* const sketch = new Sketch({\r\n id: 'sketch-work-create',\r\n layer: workLogLocationGL,\r\n view: view,\r\n container: 'sketch-view-model',\r\n availableCreateTools: ['point'],\r\n creationMode: 'update',\r\n pointSymbol: marker,\r\n visibleElements: {\r\n selectionTools: {\r\n 'lasso-selection': false,\r\n 'rectangle-selection': false,\r\n },\r\n settingsMenu: false,\r\n undoRedoMenu: false,\r\n },\r\n }); */\r\n });\r\n };\r\n\r\n SetWorkType = (e) => {\r\n const { departmentID, label, value } = e;\r\n const dept = this.state.departments.find(\r\n (d) => d.departmentID === departmentID\r\n );\r\n this.setState({\r\n selectedDepartment: { value: departmentID, label: dept.name },\r\n selectedWorkType: e,\r\n });\r\n this.__getUsersByDepartmentWithActiveWorkTally(dept.name);\r\n };\r\n\r\n \r\n __getUsersByDepartmentWithActiveWorkTally = (department) => {\r\n UserAPI.GetUsersByDepartment(department).then((users) => {\r\n // populate users from same department\r\n let GISUsers = [];\r\n users.data.map((user, index) => {\r\n workorderService.GetUserWorkSummary(user.id).then((summary) => {\r\n const { totalWorkOrders, activeWorkOrders, unassignedWorkOrders } =\r\n summary.data;\r\n\r\n GISUsers.push({\r\n value: user.id,\r\n label: `${user.firstName} ${user.lastName} - ${activeWorkOrders}`,\r\n department: user.department,\r\n });\r\n this.setState({\r\n GISUsers,\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n SetWorkAssignedTo = (e) => {\r\n const { value, label } = e;\r\n this.setState({ workAssignedToUserObj: { value, label } });\r\n };\r\n __UpdateUsersAndServicesByDepartment = (e) => {\r\n //console.log(e);\r\n /* this.setState({\r\n selectedDepartment: { value: e.value, label: e.label },\r\n departmentID: e.value,\r\n }); */\r\n // reload users for selected department\r\n //this.__getUsersByDepartmentWithActiveWorkTally(e.label);\r\n this.__GetUsersAndServicesByDepartment(e.label);\r\n // reload worktypes for selected department\r\n };\r\n\r\n CancelWorkCreation = () => {\r\n const workLogLocationGL = this.state.view.map.findLayerById(\r\n 'workLogLocationGL'\r\n );\r\n workLogLocationGL.removeAll();\r\n workorderService.SetAppInAddingAssets(false);\r\n\r\n this.state.view.graphics.removeAll();\r\n this.props.renderComponent('');\r\n };\r\n\r\n __createNewWork = () => {\r\n const {\r\n view,\r\n departments,\r\n selectedWorkType,\r\n selectedProblemType,\r\n selectedResolutionType,\r\n SelectedGISAsset,\r\n workAssignedToUserObj,\r\n NewWorkOrderAddress,\r\n workOrderDueDate,\r\n workDescription,\r\n User,\r\n NewWorkOrderGraphic,\r\n } = this.state;\r\n workorderService.SetAppInAddingAssets(false);\r\n\r\n if (NewWorkOrderAddress === '') {\r\n swal('Please provide required location address');\r\n return;\r\n }\r\n if (SelectedGISAsset === null) {\r\n swal('Please select an asset');\r\n return;\r\n }\r\n if (selectedWorkType === null) {\r\n swal('Please select work type');\r\n return;\r\n }\r\n if (workDescription === '') {\r\n swal('Please provide required description for this work.');\r\n return;\r\n }\r\n this.setState({ isSubmittingWork: true });\r\n const workLogLocationGL = view.map.findLayerById('workLogLocationGL');\r\n\r\n const __IsWorkAssigned = workAssignedToUserObj === null ? false : true;\r\n\r\n const __workAssignedTo = __IsWorkAssigned\r\n ? workAssignedToUserObj.label.split('-')[0].trim()\r\n : 'Unassigned';\r\n\r\n var selectedDate = new Date(workOrderDueDate).toGMTString();\r\n var __esri_date = selectedDate;\r\n\r\n const department = departments.find(\r\n (d) => d.departmentID === SelectedGISAsset.departmentID\r\n );\r\n\r\n const attributes = {\r\n OriginatorID: `${User.firstName} ${User.lastName}`, //`${this.state.User.id}`,\r\n OriginatorUID: `${User.id}`,\r\n WOID: 0,\r\n AssignedToID: `${User.firstName} ${User.lastName}`,\r\n AssignedToUID: `${User.id}`,\r\n Status: 'Completed',\r\n DateInitiated: workorderService.__getEpochTime(new Date().getTime()),\r\n DateCompleted: workorderService.__getEpochTime(\r\n new Date(__esri_date).getTime()\r\n ),\r\n LocationAddress: NewWorkOrderAddress,\r\n Description: 'Logged Completed Work',\r\n WorkType: selectedWorkType.label,\r\n FieldNotes: workDescription,\r\n PlannedDate: workorderService.__getEpochTime(\r\n new Date(__esri_date).getTime()\r\n ),\r\n Recurrence: null,\r\n NextDueDate: null,\r\n IsRecurring: 'No',\r\n AssetName: SelectedGISAsset.name,\r\n AssetID: SelectedGISAsset.gisServicesConfigurationID,\r\n ProblemName: selectedProblemType === null ? '' : selectedProblemType.label,\r\n ResolutionName: selectedResolutionType === null ? '' : selectedResolutionType.label,\r\n ProblemID: selectedProblemType === null ? 0 : selectedProblemType.value,\r\n ResolutionID: selectedResolutionType === null ? 0 : selectedResolutionType.value,\r\n IsWorkAssigned: 1,\r\n workServiceID: selectedWorkType.value,\r\n DepartmentID: department.departmentID,\r\n DepartmentName: department.name,\r\n };\r\n\r\n let featureGraphique = NewWorkOrderGraphic;\r\n featureGraphique.attributes = attributes;\r\n\r\n const edits = {\r\n addFeatures: [featureGraphique],\r\n };\r\n workorderService.ApplyWorkOrderEdits(edits).then((res) => {\r\n if (res.addFeatureResults.length > 0) {\r\n //[2] Add created work to backend server\r\n var workOrderQuestionAnswers = [];\r\n\r\n/* if (selectedWorkType.essentialQuestions.length > 0) {\r\n for (\r\n let index = 0;\r\n index < selectedWorkType.essentialQuestions.length;\r\n index++\r\n ) {\r\n const question = selectedWorkType.essentialQuestions[index];\r\n workOrderQuestionAnswers.push({\r\n workServiceID: selectedWorkType.value,\r\n essentialQuestionID: question.essentialQuestionID,\r\n answer: 'Details required',\r\n });\r\n }\r\n } */\r\n\r\n const _workOrderObj = {\r\n globalID: res.addFeatureResults[0].globalId,\r\n workCreatedBy: attributes.OriginatorID,\r\n originatorUID: attributes.OriginatorUID,\r\n workAssignedTo: attributes.AssignedToID,\r\n assignedToUID: attributes.AssignedToUID,\r\n status: attributes.Status,\r\n DateCompleted: new Date(workOrderDueDate),\r\n LocationAddress: attributes.LocationAddress,\r\n Description: attributes.Description,\r\n workOrderType: attributes.WorkType,\r\n FieldNotes: attributes.FieldNotes,\r\n plannedDate: new Date(workOrderDueDate),\r\n recurrence: null,\r\n nextDueDate: new Date(),\r\n isRecurring: attributes.IsRecurring,\r\n AssetName: attributes.AssetName,\r\n AssetID: attributes.AssetID,\r\n ProblemName: selectedProblemType === null ? '' : selectedProblemType.label,\r\n ResolutionName: selectedResolutionType === null ? '' : selectedResolutionType.label,\r\n ProblemID: selectedProblemType === null ? 0 : selectedProblemType.value,\r\n ResolutionID: selectedResolutionType === null ? 0 : selectedResolutionType.value,\r\n isWorkAssigned: false,\r\n DepartmentName: attributes.DepartmentName,\r\n departmentID: department.departmentID,\r\n workServiceID: selectedWorkType.value,\r\n workOrderGISAsset: {\r\n gisServicesConfigurationID:\r\n SelectedGISAsset.gisServicesConfigurationID,\r\n },\r\n gisAssets: this.state.GISAssets,\r\n workOrderQuestionAnswers: workOrderQuestionAnswers,\r\n };\r\n\r\n\r\n workorderService\r\n .CreateServerWorkOrder(_workOrderObj)\r\n .then(async (serverResponse) => {\r\n // update the feature class with woid id\r\n // [1] query the new created feature using the globalID => res.addFeatureResults[0].globalId\r\n const __newly_created_feature =\r\n await workorderService.SelectFeatureByGlobalID(\r\n res.addFeatureResults[0].globalId\r\n );\r\n let __new__feature = __newly_created_feature.features[0];\r\n\r\n // update the work orderID with ID from SQL Server => serverResponse.data.workOrderID\r\n Object.keys(__new__feature.attributes).map((fieldName) => {\r\n switch (fieldName) {\r\n case 'WOID':\r\n __new__feature.attributes[fieldName] =\r\n serverResponse.data.workOrderID;\r\n break;\r\n }\r\n });\r\n // make the new GIS feature object\r\n const __update__feature__class = {\r\n updateFeatures: [__new__feature],\r\n };\r\n\r\n // call the update attributes\r\n workorderService\r\n .ApplyWorkOrderEdits(__update__feature__class)\r\n .then((res) => {\r\n workLogLocationGL.removeAll();\r\n this.state.view.graphics.removeAll();\r\n this.props.renderComponent('');\r\n });\r\n })\r\n .catch((err) =>\r\n console.log('Error creating server work order :: ', err)\r\n );\r\n }\r\n });\r\n };\r\n\r\n handleAddWorkLocationOnMap = () => {\r\n var IslocationBtnActive = this.state.locationBtnActive;\r\n this.setState({ locationBtnActive: !IslocationBtnActive });\r\n\r\n setTimeout(() => {\r\n if (this.state.locationBtnActive) {\r\n this.state.SketchModel.create('point');\r\n } else {\r\n this.state.SketchModel.cancel();\r\n }\r\n }, 20);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n {this.state.IsNewWorkAttributesVisible && (\r\n <>\r\n \r\n {this.state.isSubmittingWork && (\r\n \r\n )}\r\n {!this.state.isSubmittingWork && (\r\n \r\n )}\r\n \r\n \r\n Log Work\r\n \r\n \r\n )}\r\n Log\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n {this.state.isUILoading && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n

    Work order location

    \r\n
    \r\n
    \r\n
    \r\n this.handleAddWorkLocationOnMap()}\r\n >\r\n \r\n \r\n
    \r\n {/*
    */}\r\n
    \r\n
    \r\n \r\n Click on the location icon and then click on the desired\r\n location on the map...\r\n \r\n
    \r\n
    \r\n

    ...or enter address

    \r\n
    \r\n
    \r\n\r\n {this.state.IsNewWorkAttributesVisible && (\r\n \r\n
    \r\n
    \r\n \r\n Please provide work information{' '}\r\n {this.state.workAssetDetails}\r\n

    \r\n {this.state.isAddingMoreAssets && (\r\n
    \r\n \r\n add assets from the map and they will be displayed\r\n below:\r\n \r\n
    \r\n
      \r\n {this.state.GISAssets.map((asset, index) => (\r\n
    1. \r\n {asset.facilityID} -{' '}\r\n {asset.assetName.split('|')[0]}\r\n
    2. \r\n ))}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n {/* Work order form */}\r\n \r\n
    \r\n \r\n \r\n this.setState({\r\n NewWorkOrderAddress: e.target.value,\r\n })\r\n } */\r\n className=\"form-control\"\r\n id=\"inputAddress\"\r\n disabled\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n this.OnWorkTypeSelectionChange(e)}\r\n options={this.state.GISServices}\r\n >\r\n
    \r\n Please select work type\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n this.setState({\r\n workOrderDueDate: e.target.value,\r\n })\r\n }\r\n />\r\n
    \r\n\r\n
    \r\n \r\n Field Notes\r\n \r\n \r\n this.setState({ workDescription: e.target.value })\r\n }\r\n required\r\n >\r\n
    \r\n Please provide required field notes.\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n this.OnProblemTypeSelectionChange(e)}\r\n options={this.state.GISProblems}\r\n >\r\n
    \r\n Please select Problem type\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n this.OnResolutionTypeSelectionChange(e)}\r\n options={this.state.GISResolutions}\r\n >\r\n
    \r\n Please select Resolution type\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {/* {this.renderNewWorkOrderUI()} */}\r\n
    \r\n \r\n
    \r\n \r\n You are in the process of logging completed work\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default LogWork;\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport classnames from 'classnames';\r\nimport React, { Component, Fragment } from 'react';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport Select from 'react-select';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n Row,\r\n TabContent,\r\n TabPane,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\nimport ImageUrl from '../../assets/images/work-orders/no-image-available.png';\r\nimport {\r\n CrudOperations,\r\n GlobalFormatter,\r\n} from '../../services/CRUDoperations.service';\r\nimport { mapGraphics } from '../../services/Graphics/graphics.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport Spinner from '../Spinner';\r\nimport './wo.details.css';\r\n\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n};\r\n\r\nconst __workOrders_total = {\r\n position: 'absolute',\r\n top: '15px',\r\n left: '15px',\r\n fontSize: '1.8rem',\r\n fontWeight: '400',\r\n color: '#afadad',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n color: '#fff',\r\n};\r\n\r\nexport default class WorkFieldUpdate extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeTab: '1',\r\n departmentID: 0,\r\n activeTabResourceSelection: '1',\r\n problemResolutionModal: false,\r\n workOrderEditForm: null,\r\n featureLayer: null,\r\n editFeature: null,\r\n highlight: null,\r\n GISAssets: [],\r\n GISResources: [],\r\n workOrderQuestionAnswers: [],\r\n Resources: [],\r\n WorkOrderDetails: null,\r\n AddedWorkResources: [],\r\n SelectedWorkResource: [],\r\n view: null,\r\n AttachmentUrl: ImageUrl,\r\n AttachmentFile: null,\r\n workAttachmentName: '',\r\n isSubmittingWorkEdits: false,\r\n SelectedResourceObj: {\r\n name: '',\r\n rate: 0,\r\n qty: 1,\r\n cost: 0,\r\n resourceID: 0,\r\n departmentID: 0,\r\n },\r\n IsResourceSelected: false,\r\n problems: [],\r\n resolutions: [],\r\n// workOrderProblemResolutions: [], // removed when changed from multi to single storage\r\n InputCustomResourceName: '',\r\n InputCustomResourceRate: '',\r\n InputCustomResourceQty: 1,\r\n InputCustomResourceType: 'Equipment',\r\n activeAsset: '',\r\n IsZoomingToExtent: false,\r\n IsZoomingToAsset: false,\r\n isComplete: false,\r\n RequiredAsset: false,\r\n RequiredResource: false,\r\n };\r\n this.attachmentChanged = this.attachmentChanged.bind(this);\r\n this.toggle = this.toggle.bind(this);\r\n this.toggleProblemResolutionModal =\r\n this.toggleProblemResolutionModal.bind(this);\r\n }\r\n\r\n toggleResourcesSelectionTab = (tab) => {\r\n if (this.state.activeTabResourceSelection !== tab) {\r\n this.setState({\r\n activeTabResourceSelection: tab,\r\n });\r\n }\r\n };\r\n\r\n toggle = (tab) => {\r\n if (this.state.activeTab !== tab) {\r\n this.setState({\r\n activeTab: tab,\r\n });\r\n if (parseInt(tab) === 2) {\r\n workorderService.SetAppInAddingAssets(true);\r\n } else {\r\n workorderService.SetAppInAddingAssets(false);\r\n }\r\n }\r\n };\r\n\r\n toggleProblemResolutionModal = () => {\r\n this.setState((prevState) => ({\r\n problemResolutionModal: !prevState.problemResolutionModal,\r\n }));\r\n };\r\n\r\n attachmentChanged = (e) => {\r\n const file = e.target.files[0];\r\n if (file) {\r\n var mimeType = file.type;\r\n if (mimeType.match(/image\\/*/) == null) {\r\n return;\r\n }\r\n\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (e) => {\r\n this.ImageUrl = reader.result;\r\n this.setState({\r\n AttachmentUrl: reader.result,\r\n AttachmentFile: file,\r\n workAttachmentName: file.name,\r\n });\r\n };\r\n }\r\n };\r\n\r\n CancelWorkCreation = () => {\r\n this.state.GISAssets.length=0;\r\n this.state.Resources.length=0;\r\n// const workCreateLocationGL = this.state.view.map.findLayerById(\r\n// 'workCreateLocationGL'\r\n// );\r\n// workCreateLocationGL.removeAll();\r\n// workorderService.SetAppInAddingAssets(false);\r\n// this.state.view.graphics.removeAll();\r\n this.props.renderComponent('');\r\n };\r\n\r\n componentDidMount() {\r\n this.state.GISAssets.length=0;\r\n this.state.GISResources.length=0; \r\n\r\n const { attributes } = this.props.workorder.feature;\r\n //console.log(attributes);\r\n // get Work order details\r\n workorderService\r\n .GetManagedOrderDetails(attributes.GlobalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n } else {\r\n workorderService\r\n //.GetResourcesByDepartment(results.data.departmentID) //GetResourcesByGISAsset\r\n .GetResourcesByGISAsset(attributes.AssetID) //GetResourcesByGISAsset\r\n .then((resources) => {\r\n // set options for selecting resources\r\n // console.log(resources);\r\n const Resources = this.state.Resources;\r\n\r\n if (resources.data.length > 0) {\r\n resources.data.map((r) => {\r\n const { resourceID, rate, resourceAsset, name, type } = r;\r\n Resources.push({\r\n resourceID,\r\n rate,\r\n value: resourceID, // will be the resource id\r\n label: `${name} | ${type}`,\r\n resourceAsset,\r\n });\r\n });\r\n }\r\n\r\n/* CrudOperations.GetProblemResolutionsByDepartment(\r\n results.data.departmentID\r\n ) */\r\n CrudOperations.GetProblemResolutionsByAsset(\r\n attributes.AssetID\r\n )\r\n .then((problemsRes) => {\r\n const { problems, resolutions } = problemsRes.data;\r\n\r\n const {\r\n gisAssets,\r\n workOrderResources,\r\n workOrderQuestionAnswers,\r\n } = results.data;\r\n\r\n this.setState({\r\n WorkOrderDetails: results.data,\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n Resources: Resources,\r\n workOrderQuestionAnswers,\r\n problems,\r\n resolutions,\r\n departmentID: results.data.departmentID,\r\n });\r\n workorderService.SetAppEditMode(true);\r\n })\r\n .catch((err) =>\r\n console.log(\r\n 'Error, unable to fetch problems resolutions :: ',\r\n err\r\n )\r\n );\r\n });\r\n }\r\n })\r\n .catch((err) => console.log(`Error fetching order details :: ${err}`));\r\n\r\n //console.log(this.props);\r\n this.__initEditor();\r\n }\r\n componentWillUnmount() {\r\n workorderService.SetAppEditMode(false);\r\n workorderService.SetAppInAddingAssets(false);\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n deleteWorkAsset = (asset) => {\r\n // remove item from collection\r\n const GISAssets = this.state.GISAssets;\r\n const _index = GISAssets.findIndex(\r\n (a) => a.facilityID === asset.facilityID\r\n );\r\n if (_index > -1) {\r\n // remove obj\r\n GISAssets.splice(_index, 1);\r\n this.setState({ GISAssets });\r\n console.log(\"here\")\r\n }\r\n };\r\n\r\n __getCaseSensitiveAttributeName = (fieldAliases, fieldName) => {\r\n for (var key in fieldAliases) { \r\n if (key.toUpperCase() === fieldName.toUpperCase()){\r\n return key;\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n __initEditor = () => {\r\n const view = workorderService.mapView();\r\n view.popup.on('trigger-action', (evt) => {\r\n if (evt.action.id === 'add-work-asset-action') {\r\n const { selectedFeature } = view.popup;\r\n var mySensitiveField = this.__getCaseSensitiveAttributeName(selectedFeature.attributes, \"facilityid\");\r\n const layer_url = selectedFeature.sourceLayer.url;\r\n const __source__layer = layer_url.split('MapServer')[0];\r\n let _gisServicesConfigurationID = 0;\r\n let _gisServicesDepartmentID = 0;\r\n const __appLayers = workorderService.GetApplicationLayers();\r\n\r\n const __service = __appLayers.find(\r\n (s) => s.serviceLink === `${__source__layer}MapServer`\r\n );\r\n _gisServicesConfigurationID = parseInt(\r\n __service.gisServicesConfigurationID\r\n );\r\n _gisServicesDepartmentID = parseInt(\r\n __service.departmentID\r\n );\r\n\r\n let __TitleAndServiceName = view.popup.title.split('|');\r\n const __gisAsset = {\r\n assetName: __TitleAndServiceName[0].trim(),\r\n facilityID: selectedFeature.attributes[mySensitiveField],\r\n gisServicesConfigurationID: _gisServicesConfigurationID, // DMM 12/6/2022\r\n// workOrderID: this.props.workorder.feature.attributes.WOID, // DMM 12/6/2022\r\n// gisAssetID: 0, // 12/6/2022\r\n// sourceLayer: __TitleAndServiceName[1].trim(), // DMM 12/8/2022\r\n// departmentID: _gisServicesDepartmentID, // DMM 12/8/2022\r\n };\r\n\r\n this.addAsset(__gisAsset);\r\n view.popup.close();\r\n }\r\n });\r\n\r\n const { geometry } = this.props.workorder.feature;\r\n workorderService.__flushSelectedWork(geometry, view);\r\n };\r\n\r\n addAsset = (asset) => {\r\n const gisAssets = this.state.GISAssets;\r\n const _indexExist = gisAssets.findIndex(\r\n (a) => a.facilityID === asset.facilityID\r\n );\r\n if (_indexExist > -1) {\r\n swal('This asset has been already added');\r\n } else {\r\n gisAssets.push(asset);\r\n this.setState({ gisAssets });\r\n }\r\n };\r\n\r\n OnResourceSelect = (e) => {\r\n //console.log(e);\r\n var SelectedResourceObj = this.state.SelectedResourceObj;\r\n const { resourceID, resourceAsset, rate, label } = e;\r\n\r\n SelectedResourceObj = {\r\n name: label.split('|')[0],\r\n type: label.split('|')[1],\r\n rate,\r\n qty: 1,\r\n cost: rate,\r\n resourceID,\r\n resourceAsset,\r\n };\r\n\r\n this.setState({ SelectedResourceObj, IsResourceSelected: true });\r\n };\r\n \r\n __renderSubmitButton() {\r\n if (this.state.workOrderQuestionAnswers.length < 1) {\r\n return (\r\n \r\n {this.state.isSubmittingWorkEdits ? 'Submitting...' : 'Complete Work'}\r\n \r\n );\r\n }\r\n }\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n RemoveFromAddedresources = (resource) => {\r\n if (resource) {\r\n const GISResources = this.state.GISResources;\r\n const index = GISResources.findIndex(\r\n (r) => r.resourceID === resource.resourceID\r\n );\r\n if (index > -1) {\r\n GISResources.splice(index, 1);\r\n this.setState({ GISResources });\r\n }\r\n }\r\n };\r\n\r\n __updateSelectedResourceObjCost = (qty) => {\r\n const SelectedResourceObj = this.state.SelectedResourceObj;\r\n SelectedResourceObj.qty = qty;\r\n const cost = qty * SelectedResourceObj.rate;\r\n SelectedResourceObj.cost = cost;\r\n this.setState({ SelectedResourceObj });\r\n };\r\n\r\n __addToWorkResources = (e) => {\r\n e.preventDefault();\r\n const GISResources = this.state.GISResources;\r\n const { name, rate, qty, cost, type, resourceID } =\r\n this.state.SelectedResourceObj;\r\n\r\n // check for duplicate\r\n const existIdx = GISResources.findIndex(\r\n (r) =>\r\n/* r.resource.name.trim().toUpperCase() === name.trim().toUpperCase() &&\r\n r.resource.type.trim().toUpperCase() === type.trim().toUpperCase() */ // DMM 12/9/2022\r\n r.name.trim().toUpperCase() === name.trim().toUpperCase() &&\r\n r.type.trim().toUpperCase() === type.trim().toUpperCase()\r\n );\r\n\r\n if (existIdx > -1) {\r\n swal('This resource already exist in the list');\r\n return;\r\n }\r\n\r\n GISResources.push({\r\n resourceID,\r\n unit: qty,\r\n cost,\r\n rate,\r\n name: name.trim(),\r\n type: type.trim(),\r\n/* resource: {\r\n resourceID,\r\n name,\r\n type,\r\n rate,\r\n resourceAsset: this.state.SelectedResourceObj.resourceAsset,\r\n }, */ // DMM 12/9/2022\r\n });\r\n this.setState({ GISResources, IsResourceSelected: false });\r\n };\r\n\r\n __zoomToAssetsExtent = () => {\r\n this.setState({ IsZoomingToExtent: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), this.state.GISAssets)\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n \r\n __zoomToAsset = (asset) => {\r\n this.setState({ activeAsset: asset.facilityID, IsZoomingToAsset: true });\r\n mapGraphics\r\n .highlightAssetAndZoomTo(workorderService.mapView(), [asset])\r\n .then((features) => this.__goToAssets(features));\r\n };\r\n\r\n __goToAssets = (features) => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n/* workorderService\r\n .mapView()\r\n .goTo(features) // DMM 12/8/2022\r\n .then(() => {\r\n this.setState({ IsZoomingToAsset: false, IsZoomingToExtent: false });\r\n }); */\r\n };\r\n\r\n _renderAssets() {\r\n return (\r\n \r\n
    Provide assets if any
    \r\n

    \r\n Turn the utility on and select a desired asset to be added to this\r\n work then click on \"Add Work Asset\"\r\n

    \r\n
    \r\n
      \r\n
    • \r\n GIS Assets{' '}\r\n \r\n [ {this.state.GISAssets.length} ]\r\n \r\n
    • \r\n {this.state.GISAssets.map((a, index) => (\r\n \r\n \r\n {a.facilityID === this.state.activeAsset &&\r\n this.state.IsZoomingToAsset && (\r\n \r\n )}\r\n this.__zoomToAsset(a)}\r\n >\r\n \r\n \r\n\r\n this.deleteWorkAsset(a)}\r\n >\r\n \r\n \r\n \r\n

      {a.assetName}

      \r\n

      {a.facilityID}

      \r\n \r\n ))}\r\n
    \r\n
    \r\n\r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n beforeSubmit = (event: React.FormEvent) => {\r\n event.stopPropagation();\r\n };\r\n\r\n __addCustomResource = () => {\r\n if (this.state.InputCustomResourceName === '') {\r\n swal('Please provide the resource name');\r\n return;\r\n }\r\n\r\n if (this.state.InputCustomResourceRate === '') {\r\n swal('Please provide the resource rate');\r\n return;\r\n }\r\n const GISResources = this.state.GISResources;\r\n const { attributes } = this.props.workorder.feature;\r\n\r\n // check for duplicate\r\n const existIdx = GISResources.findIndex(\r\n (r) =>\r\n r.resource.name.trim().toUpperCase() ===\r\n this.state.InputCustomResourceName.trim().toUpperCase() &&\r\n r.resource.type.trim().toUpperCase() ===\r\n this.state.InputCustomResourceType.trim().toUpperCase()\r\n );\r\n\r\n if (existIdx > -1) {\r\n swal('This resource already exist in the list');\r\n return;\r\n }\r\n\r\n //const { name, rate, quantity, type } = values;\r\n GISResources.push({\r\n resourceID: 0,\r\n unit: this.state.InputCustomResourceQty,\r\n cost: this.state.InputCustomResourceRate * this.state.InputCustomResourceQty, //rate * quantity,\r\n rate: this.state.InputCustomResourceRate, //rate needed for storage too! 12/1/2022\r\n resource: {\r\n //resourceID: 0,\r\n //departmentID: this.state.departmentID,\r\n type: this.state.InputCustomResourceType,\r\n name: this.state.InputCustomResourceName,\r\n rate: this.state.InputCustomResourceRate,\r\n resourceAsset: {\r\n //resourceAssetID: 0,\r\n //resourceID: 0,\r\n gisServicesConfigurationID: attributes.AssetID,\r\n },\r\n },\r\n });\r\n this.setState({ GISResources });\r\n };\r\n\r\n _renderResources() {\r\n const { name, rate, qty, cost } = this.state.SelectedResourceObj;\r\n return (\r\n \r\n
    Provide resources if any
    \r\n

    \r\n Select a desired resource and provide the quantity for the total cost.\r\n

    \r\n\r\n {/* Resources components */}\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n this.OnResourceSelect(e)}\r\n options={this.state.Resources}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({\r\n InputCustomResourceName: e.target.value,\r\n })\r\n }\r\n className=\"form-control\"\r\n id=\"inputResource\"\r\n required\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({\r\n InputCustomResourceRate: e.target.value,\r\n })\r\n }\r\n className=\"form-control\"\r\n id=\"inputRate\"\r\n required\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n (Hours)\r\n \r\n \r\n \r\n this.setState({\r\n InputCustomResourceQty: e.target.value,\r\n })\r\n }\r\n className=\"form-control\"\r\n id=\"inputQty\"\r\n required\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({\r\n InputCustomResourceType: e.target.value,\r\n })\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Add\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {name}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {rate}\r\n \r\n this.__updateSelectedResourceObjCost(v.target.value)\r\n }\r\n />\r\n {GlobalFormatter.FormatUSD(cost)}\r\n \r\n \r\n \r\n
    \r\n
    \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.GISResources.map((r, index) => (\r\n \r\n \r\n{/* DMM 12/9/2022 */}\r\n \r\n \r\n{/* DMM 12/9/2022 */}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ResourceRateQuantityCost\r\n \r\n this.setState({\r\n GISResources: [],\r\n })\r\n }\r\n >\r\n
    \r\n{/* {r.resource.name} | {r.resource.type} DMM 12/9/2022 */} \r\n {r.name} | {r.type}\r\n {r.resource.rate}{r.rate}{r.unit}{GlobalFormatter.FormatUSD(r.resource.rate * r.unit)}{GlobalFormatter.FormatUSD(r.rate * r.unit)}\r\n this.RemoveFromAddedresources(r)}\r\n >\r\n
    Total:\r\n {this.__getResourcesTotalCost()}\r\n
    \r\n \r\n\r\n
    \r\n\r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n _renderAttachments() {\r\n return (\r\n \r\n
    Add attachment if needed
    \r\n

    Capture photo from camera

    \r\n\r\n {/*Attachments wrapper*/}\r\n
    \r\n \r\n \r\n \r\n \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.attachmentChanged(evt)}\r\n />\r\n \r\n {this.state.workAttachmentName}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n );\r\n }\r\n _renderEssentialQuestions() {\r\n if (this.state.workOrderQuestionAnswers.length > 0) {\r\n return (\r\n \r\n {this.state.workOrderQuestionAnswers.map((q, index) => (\r\n
    \r\n \r\n

    \r\n {q.essentialQuestion.question}\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 No Details found\r\n

    \r\n

    \r\n There are no Essential Details linked to this work order.\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Update work order\r\n * @param {*} values\r\n * @returns\r\n */\r\n\r\n updateWorkInfo = (event, values) => {\r\n\r\n const { isComplete } = this.state;\r\n const workOrderQuestionAnswers = this.state.workOrderQuestionAnswers;\r\n const QuestionsNotAnswered = [];\r\n if (values !== null) {\r\n if (values.fieldNotes === '' && isComplete) {\r\n swal(`Please provide required field notes`);\r\n this.toggle('1');\r\n return;\r\n }\r\n if (workOrderQuestionAnswers.length > 0) {\r\n for (let index = 0; index < workOrderQuestionAnswers.length; index++) {\r\n const workorder = workOrderQuestionAnswers[index];\r\n const response = values[`answer-${index}`].trim();\r\n workOrderQuestionAnswers[index].answer = response;\r\n if (\r\n response === '' ||\r\n response.indexOf('Details required') > -1\r\n ) {\r\n QuestionsNotAnswered.push(workorder.essentialQuestion.question);\r\n }\r\n }\r\n }\r\n\r\n if (QuestionsNotAnswered.length > 0 && isComplete) {\r\n let _questions = '';\r\n for (let q = 0; q < QuestionsNotAnswered.length; q++) {\r\n _questions = _questions + `${q + 1}. ${QuestionsNotAnswered[q]} \\n`;\r\n }\r\n swal(\r\n `Please provide required details for the following: \\n \\n ${_questions}`\r\n );\r\n this.toggle('5');\r\n return;\r\n }\r\n\r\n if (this.state.GISAssets.length === 0 && isComplete) { \r\n if (this.__getPRAsset(values.problemID,values.resolutionID) === \"Yes\") {\r\n swal(\r\n `Must add ASSETS before completion... \\n Required for the selected Problem / Resolution`\r\n );\r\n this.toggle('2');\r\n return;\r\n }\r\n } \r\n\r\n if (this.state.GISResources.length === 0 && isComplete) { \r\n if (this.__getPRResource(values.problemID,values.resolutionID) === \"Yes\") {\r\n swal(\r\n `Must add RESOURCES before completion... \\n Required for the selected Problem / Resolution`\r\n );\r\n this.toggle('3');\r\n return;\r\n }\r\n }\r\n\r\n // confirmation\r\n \r\n swal({\r\n text: isComplete\r\n ? 'Are you sure to mark this work as complete?'\r\n : 'Are you sure to update this work? The Work will not be completed',\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'No', confirm: 'Yes' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n this.setState({\r\n isSubmittingWorkEdits: true,\r\n workOrderQuestionAnswers,\r\n });\r\n\r\n// console.log(this.props.user);\r\n let feature = this.props.workorder.feature;\r\n// const { firstName, lastName } = this.props.user; /* ERROR HERE DMM */\r\n\r\n Object.keys(feature.attributes).forEach((fieldName) => {\r\n switch (fieldName) {\r\n case 'LocationAddress':\r\n feature.attributes[fieldName] = values.address;\r\n break;\r\n case 'FieldNotes':\r\n feature.attributes[fieldName] = values.fieldNotes;\r\n break;\r\n case 'Status':\r\n if (isComplete) {\r\n feature.attributes[fieldName] = 'Completed';\r\n }\r\n break;\r\n/* case 'AssignedToID': //BAD CODE! ASSIGNED TO DEREK MAIR IF UNASSIGNED?\r\n if (feature.attributes[fieldName] === 'Unassigned') {\r\n feature.attributes[fieldName] = 'Derek Mair'; //`${firstName} ${lastName}`;\r\n }\r\n break; */\r\n case 'DateCompleted':\r\n if (isComplete) {\r\n feature.attributes[fieldName] =\r\n workorderService.__getEpochTime(new Date().getTime());\r\n }\r\n break;\r\n case 'ProblemName':\r\n if (values.problemID == 'Select'){\r\n values.problemID = '';\r\n }\r\n if (values.problemID !== '') {\r\n feature.attributes[fieldName] = this.__getProblemName(values.problemID);\r\n } else {\r\n feature.attributes[fieldName] = '';\r\n } \r\n break;\r\n case 'ResolutionName':\r\n if (values.resolutionID == 'Select'){\r\n values.resolutionID = '';\r\n }\r\n if (values.resolutionID !== '') {\r\n feature.attributes[fieldName] = this.__getResolutionName(values.resolutionID);\r\n } else {\r\n feature.attributes[fieldName] = '';\r\n } \r\n break;\r\n case 'ProblemID':\r\n if (values.problemID == 'Select'){\r\n values.problemID = '';\r\n }\r\n if (values.problemID !== '') {\r\n feature.attributes[fieldName] = values.problemID;\r\n } else {\r\n feature.attributes[fieldName] = 0;\r\n } \r\n break;\r\n case 'ResolutionID':\r\n if (values.resolutionID == 'Select'){\r\n values.resolutionID = '';\r\n }\r\n if (values.resolutionID !== '') {\r\n feature.attributes[fieldName] = values.resolutionID;\r\n } else {\r\n feature.attributes[fieldName] = 0;\r\n } \r\n break;\r\n case 'Description':\r\n if (values.description !== '') {\r\n feature.attributes[fieldName] = values.description;\r\n } else {\r\n feature.attributes[fieldName] = '';\r\n } \r\n break;\r\n case 'PlannedDate':\r\n if (values.duedate !== '') {\r\n var selectedDate = new Date(values.duedate).toGMTString();\r\n var __esri_date = selectedDate;\r\n feature.attributes[fieldName] = workorderService.__getEpochTime(new Date(__esri_date).getTime());\r\n } else {\r\n feature.attributes[fieldName] = '1/1/1970';\r\n } \r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n // apply changes\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n workorderService.ApplyWorkOrderEdits(edits).then((result) => {\r\n if (result.updateFeatureResults.length > 0) {\r\n workorderService.RefreshWorkOrders();\r\n // Add attachments if any\r\n if (this.state.AttachmentFile) {\r\n workorderService\r\n .AddAttachmentToWorkOrder(\r\n this.state.AttachmentFile,\r\n feature.attributes.OBJECTID\r\n )\r\n .then((attachmentResults) => {\r\n //console.log(' :: SUCCESS :: ', attachmentResults);\r\n })\r\n .catch((attachmentError) => {\r\n console.log(\r\n '==============================================='\r\n );\r\n console.error(\r\n '[ addAttachment ] FAILURE: ',\r\n attachmentError\r\n );\r\n });\r\n }\r\n\r\n // related work records updates\r\n // update related records\r\n const __workOrderObj = {\r\n workOrderID: this.state.WorkOrderDetails.workOrderID, // ID-able\r\n globalID: this.state.WorkOrderDetails.globalID, // ID-able\r\n plannedDate: new Date(values.duedate), // editable\r\n problemName: feature.attributes.ProblemName, // editable\r\n resolutionName: feature.attributes.ResolutionName, // editable\r\n problemID: feature.attributes.ProblemID, // editable\r\n resolutionID: feature.attributes.ResolutionID, // editable\r\n dateCompleted: feature.attributes.DateCompleted // changed\r\n ? new Date(feature.attributes.DateCompleted)\r\n : new Date(\"1/1/1970\"),\r\n locationAddress: feature.attributes.LocationAddress, // editable\r\n description: feature.attributes.Description, // editable\r\n fieldNotes: feature.attributes.FieldNotes, // editable\r\n status: feature.attributes.Status, // changed\r\n\r\n// workOrderType: this.state.WorkOrderDetails.workOrderType,\r\n// workServiceID: this.state.WorkOrderDetails.workServiceID,\r\n// dateRequired: feature.attributes.DateRequired, // added when found missing vs. feature and database compare\r\n// assetName: feature.attributes.AssetName,\r\n// assetID: feature.attributes.AssetID,\r\n// departmentName: feature.attributes.DepartmentName,\r\n// isRecurring: feature.attributes.IsRecurring, // added when found missing vs. feature and database compare\r\n// originatorUID: feature.attributes.OriginatorUID, // added when found missing vs. feature and database compare\r\n// workCreatedBy: feature.attributes.OriginatorID, // added when found missing vs. feature and database compare\r\n// nextDueDate: feature.attributes.NextDueDate, // added when found missing vs. feature and database compare\r\n// workAssignedTo: feature.attributes.AssignedToID,\r\n// assignedToUID: feature.attributes.AssignedToUID,\r\n// isWorkAssigned: feature.attributes.IsWorkAssigned,\r\n// departmentID: this.state.WorkOrderDetails.departmentID,\r\n// recurrence: feature.attributes.Recurrence, // added when found missing vs. feature and database compare\r\n// dateCreated: feature.attributes.DateInitiated, // added when found missing vs. feature and database compare\r\n\r\n gisAssets: this.state.GISAssets, // editable\r\n workOrderResources: this.state.GISResources, // editable\r\n workOrderQuestionAnswers: this.state.workOrderQuestionAnswers, // editable\r\n// workOrderProblemResolutions: this.state.workOrderProblemResolutions, // removed when changed from multi to single storage\r\n\r\n };\r\n //console.log(__workOrderObj);\r\n workorderService\r\n .UpdateWorkRelatedDetails(__workOrderObj)\r\n .then((updateDataResponse) => {\r\n // Recreate similar work order if Recurrence enabled\r\n// this.state.GISAssets.length=0; //DMM 12/22/2022 - allows assets to repeat with recurring work order\r\n this.state.GISResources.length=0;\r\n if (feature.attributes.IsRecurring === 'Yes' && isComplete) {\r\n this.__CreateRecurrentNextWorkOrder(feature);\r\n } else {\r\n this.state.GISAssets.length=0; //DMM 12/22/2022\r\n this.props.renderComponent('');\r\n }\r\n })\r\n .catch((error) => {\r\n swal('There was an error updating related records.');\r\n console.log(`Error updating related data :: ${error}`);\r\n });\r\n } else {\r\n console.log(\r\n 'There were some errors updating the Feature Service. Please try again'\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n __handleBtnUpdateClick = () => {\r\n this.setState({ isComplete: false });\r\n setTimeout(() => {\r\n document.getElementById('btn-complete-work').click();\r\n }, 20);\r\n };\r\n\r\n __CreateRecurrentNextWorkOrder = (feature) => {\r\n let recurrenceArr = feature.attributes.Recurrence.split(' ');\r\n let recurrenceDelay = recurrenceArr[recurrenceArr.length - 1];\r\n let reccurenceNber = recurrenceArr[recurrenceArr.length - 2];\r\n\r\n const _nextDueDate = workorderService.__getNextDueDate(\r\n reccurenceNber,\r\n feature.attributes.NextDueDate,\r\n recurrenceDelay\r\n );\r\n\r\n Object.keys(feature.attributes).forEach((fieldName) => {\r\n switch (fieldName) {\r\n case 'DateInitiated':\r\n feature.attributes[fieldName] = workorderService.__getEpochTime(\r\n new Date().getTime()\r\n );\r\n break;\r\n case 'PlannedDate':\r\n feature.attributes[fieldName] = workorderService.__getEpochTime(\r\n new Date(feature.attributes.NextDueDate).getTime()\r\n );\r\n break;\r\n case 'FieldNotes':\r\n feature.attributes[fieldName] = null;\r\n break;\r\n case 'Status':\r\n if (feature.attributes.IsWorkAssigned == 1) {\r\n feature.attributes[fieldName] = 'Assigned'\r\n } else {\r\n feature.attributes[fieldName] = 'Unassigned'\r\n };\r\n break;\r\n case 'NextDueDate':\r\n feature.attributes[fieldName] = _nextDueDate;\r\n break;\r\n case 'DateCompleted':\r\n// feature.attributes[fieldName] = new Date(\"1/1/1970\");\r\n feature.attributes[fieldName] = workorderService.__getEpochTime('1/1/1970');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n const edits = {\r\n addFeatures: [feature],\r\n };\r\n\r\n workorderService.ApplyWorkOrderEdits(edits).then((res) => {\r\n if (res.addFeatureResults.length > 0) {\r\n var __gis__assets = [];\r\n\r\n if (this.state.GISAssets.length > 0) {\r\n this.state.GISAssets.map((asset) => {\r\n __gis__assets.push({\r\n assetName: asset.assetName,\r\n facilityID: asset.facilityID,\r\n gisServicesConfigurationID: asset.gisServicesConfigurationID\r\n });\r\n });\r\n }\r\n\r\n const _nextWorkOrderObj = {\r\n globalID: res.addFeatureResults[0].globalId,\r\n assignedToUID: feature.attributes.AssignedToUID,\r\n departmentID: feature.attributes.DepartmentID,\r\n workOrderType: feature.attributes.WorkType,\r\n status: feature.attributes.Status,\r\n workServiceID: feature.attributes.WorkServiceID,\r\n workAssignedTo: feature.attributes.AssignedToID,\r\n isWorkAssigned: feature.attributes.IsWorkAssigned === 0 ? false : true, // MATCHES ASSIGNMENT FROM PRIOR WORK ORDER\r\n workCreatedBy: feature.attributes.OriginatorID,\r\n originatorUID: feature.attributes.OriginatorUID,\r\n problemName: feature.attributes.ProblemName,\r\n resolutionName: feature.attributes.ResolutionName,\r\n problemID: feature.attributes.ProblemID,\r\n resolutionID: feature.attributes.ResolutionID,\r\n plannedDate: new Date(feature.attributes.PlannedDate),\r\n isRecurring: feature.attributes.IsRecurring,\r\n recurrence: feature.attributes.Recurrence,\r\n nextDueDate: new Date(_nextDueDate),\r\n gisAssets: __gis__assets,\r\n LocationAddress: feature.attributes.LocationAddress,\r\n Description: feature.attributes.Description,\r\n AssetName: feature.attributes.AssetName,\r\n AssetID: feature.attributes.AssetID,\r\n DepartmentName: feature.attributes.DepartmentName,\r\n xcoord: feature.attributes.XCOORD,\r\n ycoord: feature.attributes.YCOORD,\r\n workOrderGISAsset: {\r\n gisServicesConfigurationID:\r\n feature.attributes.AssetID,\r\n },\r\n workOrderQuestionAnswers: [],\r\n };\r\n\r\n // NEW CODE FROM DMM TO ADD NEW DB AND GIS WORK ORDER WITH MATCHING WOID AND SIMILAR TO PRIOR (FROM RECURRENCE)\r\n workorderService\r\n .CreateServerWorkOrder(_nextWorkOrderObj)\r\n .then(async (serverResponse) => {\r\n // update the feature class with woid id\r\n // [1] query the new created feature using the globalID => res.addFeatureResults[0].globalId\r\n const __newly_created_feature =\r\n await workorderService.SelectFeatureByGlobalID(\r\n res.addFeatureResults[0].globalId\r\n );\r\n let __new__feature = __newly_created_feature.features[0];\r\n\r\n // update the work orderID with ID from SQL Server => serverResponse.data.workOrderID\r\n Object.keys(__new__feature.attributes).map((fieldName) => {\r\n switch (fieldName) {\r\n case 'WOID':\r\n __new__feature.attributes[fieldName] =\r\n serverResponse.data.workOrderID;\r\n break;\r\n }\r\n });\r\n // make the new GIS feature object\r\n const __update__feature__class = {\r\n updateFeatures: [__new__feature],\r\n };\r\n\r\n // call the update attributes\r\n workorderService\r\n .ApplyWorkOrderEdits(__update__feature__class)\r\n .then((res) => {\r\n// workCreateLocationGL.removeAll();\r\n// this.state.view.graphics.removeAll();\r\n this.state.GISAssets.length=0; //DMM 12/22/2022\r\n this.props.renderComponent('');\r\n }); \r\n })\r\n .catch((err) =>\r\n console.log('Error creating server work order :: ', err)\r\n );\r\n\r\n // REMOVED CODE WHEN RECURRENCE WAS IMPLEMENTED CORRECTLY ON 11/4/2022 DMM\r\n/* workorderService\r\n .CreateServerWorkOrder(_nextWorkOrderObj)\r\n .then((resp) => {\r\n swal(\r\n `Thank you! As a reminder, the next work is due on ${_nextDueDate}`\r\n );\r\n this.props.renderComponent('');\r\n })\r\n .catch((err) =>\r\n console.log('ERROR Creating recurrence Service :: ', err)\r\n ); */\r\n }\r\n });\r\n };\r\n\r\n handleAddProblemResolutions = (event, values) => { //disabled in form - code not reachable\r\n const { problemID, resolutionID } = values;\r\n if (problemID === 'Select' || resolutionID === 'Select') {\r\n swal('Please select a problem and the solution applied');\r\n return;\r\n }\r\n const workOrderProblemResolutions = this.state.workOrderProblemResolutions;\r\n const workOrderProblemResolution = {\r\n workOrderID: this.state.WorkOrderDetails.workOrderID,\r\n problemID,\r\n resolutionID,\r\n };\r\n workOrderProblemResolutions.push(workOrderProblemResolution);\r\n this.setState({\r\n workOrderProblemResolutions,\r\n problemResolutionModal: false,\r\n });\r\n };\r\n\r\n _renderProblemOptions() {\r\n return (\r\n \r\n {this.state.problems.map((p, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n _renderResolutionOptions() {\r\n return (\r\n \r\n {this.state.resolutions.map((r, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n/* removeProblem = (p) => {\r\n const workOrderProblemResolutions = this.state.workOrderProblemResolutions;\r\n let index = workOrderProblemResolutions.findIndex(\r\n (pr) => parseInt(pr.problemID) === parseInt(p.problemID)\r\n );\r\n if (index > -1) {\r\n workOrderProblemResolutions.splice(index, 1);\r\n this.setState({\r\n workOrderProblemResolutions,\r\n });\r\n }\r\n }; */ //removed when problem and resolution went from multi to single storage\r\n\r\n __getPRAsset = (problemID,resolutionID) => {\r\n const p = this.state.problems.find(\r\n (p) => p.problemID === parseInt(problemID)\r\n );\r\n const r = this.state.resolutions.find(\r\n (r) => r.resolutionID === parseInt(resolutionID)\r\n );\r\n if (p !== undefined) {\r\n if (p.requireAsset === \"Yes\"){\r\n return \"Yes\";\r\n }\r\n };\r\n if (r !== undefined) {\r\n if (r.requireAsset === \"Yes\") {\r\n return \"Yes\";\r\n }\r\n };\r\n return \"No\";\r\n }\r\n \r\n __getPRResource = (problemID,resolutionID) => {\r\n const p = this.state.problems.find(\r\n (p) => p.problemID === parseInt(problemID)\r\n );\r\n const r = this.state.resolutions.find(\r\n (r) => r.resolutionID === parseInt(resolutionID)\r\n );\r\n if (p !== undefined) {\r\n if (p.requireResource === \"Yes\"){\r\n return \"Yes\";\r\n }\r\n };\r\n if (r !== undefined) {\r\n if (r.requireResource === \"Yes\") {\r\n return \"Yes\";\r\n }\r\n };\r\n return \"No\";\r\n }\r\n \r\n __getProblemName = (problemID) => {\r\n const p = this.state.problems.find(\r\n (p) => p.problemID === parseInt(problemID)\r\n );\r\n return p.name;\r\n };\r\n __getResolutionName = (resolutionID) => {\r\n const r = this.state.resolutions.find(\r\n (r) => r.resolutionID === parseInt(resolutionID)\r\n );\r\n return r.name;\r\n };\r\n\r\n validateFormAndSubmit = () => {\r\n this.setState({ isComplete: true });\r\n setTimeout(() => {\r\n document.getElementById('btn-complete-work').click();\r\n }, 20);\r\n };\r\n\r\n render() {\r\n const { attributes } = this.props.workorder.feature;\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {this.state.isSubmittingWorkEdits && (\r\n \r\n )}\r\n {!this.state.isSubmittingWorkEdits && (\r\n \r\n )}\r\n \r\n \r\n Complete work\r\n \r\n ID: {attributes.WOID}\r\n
    \r\n
    \r\n this.__handleBtnUpdateClick()}\r\n >\r\n {this.state.isSubmittingWorkEdits && (\r\n \r\n )}\r\n {!this.state.isSubmittingWorkEdits && (\r\n \r\n )}\r\n \r\n \r\n Update work info\r\n \r\n this.props.renderComponent('')}\r\n >\r\n \r\n \r\n \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 {/*Edit GIS data form*/}\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {this._renderProblemOptions()}\r\n \r\n\r\n \r\n \r\n {this._renderResolutionOptions()}\r\n \r\n\r\n {/*
    \r\n {this.state.workOrderProblemResolutions.map(\r\n (p, index) => (\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n {index + 1}.\r\n \r\n
    \r\n \r\n \r\n \r\n {this.__getProblemName(p.problemID)}\r\n \r\n

    \r\n {this.__getResolutionName(p.resolutionID)}\r\n

    \r\n \r\n \r\n this.removeProblem(p)}\r\n className=\"btn btn-link text-danger btn-lg p-0\"\r\n >\r\n \r\n \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 Add Problems/Resolutions\r\n */}\r\n \r\n \r\n please provide required field notes.\r\n \r\n\r\n
      \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n {this._renderAssets()}\r\n {this._renderResources()}\r\n {this._renderAttachments()}\r\n \r\n
    Essential Details
    \r\n\r\n {this._renderEssentialQuestions()}\r\n\r\n {/*
    \r\n {this.__renderSubmitButton()}\r\n
    */}\r\n
    \r\n this.toggle('4')}\r\n color=\"info\"\r\n className=\"mr-2\"\r\n >\r\n \r\n \r\n \r\n {this.state.isSubmittingWorkEdits\r\n ? 'Submitting...'\r\n : 'Complete Work'}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n You are in the process of completing assigned work\r\n \r\n
    \r\n\r\n \r\n \r\n Adding Problem Resolution\r\n \r\n \r\n \r\n \r\n \r\n {this._renderProblemOptions()}\r\n \r\n \r\n \r\n {this._renderResolutionOptions()}\r\n \r\n\r\n
    \r\n \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","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n Button,\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport WorkDetails from './Details/WorkDetails';\r\nimport './wo.details.css';\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n};\r\n\r\nclass WorkOrderDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n User: null,\r\n modal: false,\r\n isReclassifyingWork: false,\r\n workStatus: this.props.workorder.attributes.Status,\r\n unassignedWorkStatus: 'Unassigned',\r\n isClaimingWork: false,\r\n isWorkAssigned: false,\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.openModalWithHeaderClass = this.openModalWithHeaderClass.bind(this);\r\n this.openModalWithBodyClass = this.openModalWithBodyClass.bind(this);\r\n }\r\n\r\n toggle = () => {\r\n this.setState((prevState) => ({\r\n modal: !prevState.modal,\r\n }));\r\n };\r\n openModalWithHeaderClass = (className) => {\r\n this.setState({ headerClassName: className });\r\n this.toggle();\r\n };\r\n openModalWithBodyClass = (className) => {\r\n this.setState({ headerClassName: className, bodyClass: className });\r\n this.toggle();\r\n };\r\n componentDidMount() {\r\n// this.state.GISAssets.length=0;\r\n// this.state.GISResources.length=0; \r\n const loggedUser = getLoggedInUser();\r\n UserAPI.GetUser(loggedUser.id).then((user) => {\r\n const view = workorderService.mapView();\r\n this.setState({\r\n User: user.data,\r\n isWorkAssigned:\r\n this.props.workorder.attributes.Status === 'Assigned' ? true : false,\r\n });\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { workStatus } = this.state;\r\n return workorderService.renderStatus(workStatus);\r\n };\r\n\r\n reclassifyWorkOrder = () => {\r\n swal({\r\n text: `Are you sure you want to release this work order?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n // reverse the status back to Unassigned and return to list\r\n this.toggle();\r\n }\r\n });\r\n };\r\n\r\n reclassifyWork = () => {\r\n let __reason = document.getElementById('reason').value;\r\n if (__reason.trim().length < 1) {\r\n swal('Please provide a reason');\r\n } else {\r\n this.setState({ isReclassifyingWork: true });\r\n // append the reason to the work field note\r\n const feature = this.props.workorder;\r\n Object.keys(feature.attributes).map((fieldName, index) => {\r\n switch (fieldName.toUpperCase()) {\r\n case 'STATUS':\r\n feature.attributes[fieldName] = 'Unassigned';\r\n break;\r\n case 'ASSIGNEDTOID':\r\n feature.attributes[fieldName] = 'Unassigned';\r\n break;\r\n case 'ASSIGNEDTOUID':\r\n feature.attributes[fieldName] = '';\r\n break;\r\n case 'FIELDNOTES':\r\n feature.attributes[fieldName] =\r\n feature.attributes[fieldName] === null\r\n ? `Reclassified reason- ${__reason.trim()}`\r\n : `${\r\n feature.attributes[fieldName]\r\n } | Reclassified reason: ${__reason.trim()}`;\r\n break;\r\n }\r\n });\r\n // reverse the status back to Unassigned and return to list\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n workorderService.reclassifyWork(edits).then((res) => {\r\n if (res.updateFeatureResults.length > 0) {\r\n workorderService.RefreshWorkOrders();\r\n swal('Work released successfully');\r\n this.props.renderComponent('');\r\n } else {\r\n this.setState({ isReclassifyingWork: false });\r\n swal('Something went wrong. Please try again');\r\n }\r\n });\r\n }\r\n };\r\n\r\n ClaimUnassignedWork = () => {\r\n // Change status automatically\r\n this.setState({ isClaimingWork: true });\r\n const feature = this.props.workorder;\r\n\r\n Object.keys(feature.attributes).forEach((fieldName) => {\r\n switch (fieldName.toUpperCase()) {\r\n case 'STATUS':\r\n feature.attributes[fieldName] = 'Assigned';\r\n break;\r\n\r\n case 'ASSIGNEDTOID':\r\n feature.attributes[\r\n fieldName\r\n ] = `${this.state.User.firstName} ${this.state.User.lastName}`;\r\n break;\r\n case 'ASSIGNEDTOUID':\r\n feature.attributes[fieldName] = this.state.User.id;\r\n break;\r\n }\r\n });\r\n const edits = {\r\n updateFeatures: [feature],\r\n };\r\n\r\n workorderService.ClaimUnassignedWork(edits).then((res) => {\r\n if (res.updateFeatureResults.length > 0) {\r\n //console.log('Updated feature :: ', res.updateFeatureResults[0]);\r\n workorderService.RefreshWorkOrders();\r\n this.props.renderComponent('FieldWorkUpdate', {\r\n feature: feature,\r\n isClaimedWork: true,\r\n });\r\n } else {\r\n swal('There was an issue claiming this work. Please try again later.');\r\n }\r\n this.setState({ isClaimingWork: false });\r\n });\r\n };\r\n\r\n __renderOptionalButton() {\r\n switch (this.props.workorder.attributes.Status) {\r\n case 'Unassigned':\r\n return (\r\n \r\n {this.state.isClaimingWork ? (\r\n <>\r\n \r\n {' Claiming...'}\r\n \r\n ) : (\r\n 'Claim'\r\n )}\r\n \r\n );\r\n break;\r\n case 'Completed':\r\n return <>;\r\n break;\r\n\r\n default:\r\n return (\r\n <>\r\n \r\n this.props.renderComponent(\r\n 'FieldWorkUpdate',\r\n {\r\n feature: this.props.workorder,\r\n isClaimedWork: false,\r\n },\r\n this.props.user\r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n __returnToWorkList = () => {\r\n var selectedWorkID = new URLSearchParams(window.location.search).get('id');\r\n if (selectedWorkID) {\r\n // remove url params\r\n this.props.history.push('/apps/workorders');\r\n }\r\n this.props.renderComponent('');\r\n };\r\n\r\n render() {\r\n const { attributes } = this.props.workorder;\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    ID: {attributes.WOID}
    \r\n \r\n {this.__renderOptionalButton()}\r\n
    \r\n \r\n
    \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.__returnToWorkList()}\r\n >\r\n Return\r\n \r\n {this.state.isWorkAssigned && (\r\n \r\n Release Work Order\r\n \r\n )}\r\n \r\n
    \r\n\r\n \r\n Release Work Order\r\n \r\n
    \r\n \r\n \r\n \r\n A reason is required.\r\n \r\n
    \r\n
    \r\n \r\n {this.state.isReclassifyingWork\r\n ? 'Releasing...'\r\n : 'Complete the Release'}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default withRouter(WorkOrderDetails);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { UncontrolledTooltip } from 'reactstrap';\r\n\r\nclass FooterList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n //console.log(this.props);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {' '}\r\n Table\r\n \r\n \r\n View Work Order List\r\n \r\n \r\n {' '}\r\n List\r\n \r\n \r\n Zoom to List\r\n \r\n \r\n {' '}\r\n Batch\r\n \r\n \r\n Print List as batch\r\n \r\n{/* \r\n \r\n \r\n \r\n Show my selection list\r\n */}\r\n \r\n );\r\n }\r\n}\r\nexport default FooterList;\r\n","import React, { Fragment } from 'react';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\n\r\nconst NoWorkOrders = () => {\r\n return (\r\n \r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    \r\n No Work Orders found\r\n

    \r\n

    \r\n There are no work orders at this time.\r\n

    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default NoWorkOrders;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n Card,\r\n CardBody,\r\n CardFooter,\r\n CardHeader,\r\n Col,\r\n CustomInput,\r\n Input,\r\n Row,\r\n UncontrolledTooltip,\r\n} from 'reactstrap';\r\nimport {\r\n getLoggedInUser,\r\n isUserInSupervisorRole,\r\n} from '../../helpers/authUtils';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport { WorkOrderFilter } from '../../utils/filters/filter';\r\nimport FooterList from '../Shared/FooterList';\r\nimport Spinner from '../Spinner';\r\nimport NoWorkOrders from './NoWorkOrders';\r\n\r\nconst __stylePanelHeader = {\r\n position: 'relative',\r\n height: '70px',\r\n backgroundColor: '#313a46',\r\n};\r\n\r\nconst __listPanelContentScroller = {\r\n position: 'absolute',\r\n top: '70px',\r\n left: '0',\r\n right: '0',\r\n bottom: '65px',\r\n overflow: 'auto',\r\n};\r\n\r\nconst __togglerToolbar = {\r\n position: 'relative',\r\n height: '45px',\r\n backgroundColor: '#f5f5f5',\r\n padding: '5px',\r\n textAlign: 'left',\r\n borderBottom: '1px solid #ddd',\r\n};\r\n\r\nconst __workOrders_total = {\r\n float: 'right',\r\n marginTop: '8px',\r\n marginRight: '5px',\r\n fontSize: '1.8rem',\r\n fontWeight: '400',\r\n color: '#afadad',\r\n};\r\n\r\nconst btnFieldEditorWrapper = {\r\n position: 'absolute',\r\n left: '0',\r\n right: '0',\r\n top: '8px',\r\n};\r\nconst btnOfficeWrapper = {\r\n position: 'absolute',\r\n left: '0',\r\n right: '0',\r\n top: '0',\r\n};\r\n\r\nconst _btnFooter = {\r\n backgroundColor: '#a4a3a4',\r\n textAlign: 'center',\r\n padding: '0.75rem 0',\r\n};\r\n\r\nclass WorkOrdersList extends Component { constructor(props) {\r\n super(props);\r\n this.state = {\r\n User: null,\r\n userAssets: [],\r\n workorders: [],\r\n departments: [],\r\n workTypes: [],\r\n workListUsers: [],\r\n isLoading: true,\r\n sortText: 'Oldest', // Newest\r\n sortIcon: 'dripicons-arrow-thin-up', // dripicons-arrow-thin-up\r\n toggleCompleteText: 'Show Completed', // Hide Completed\r\n toggleCompleteIcon: 'mdi mdi-eye-outline', // mdi mdi-eye-off-outline\r\n completedWorkToolTip: 'Show completed on Map',\r\n isFieldCrew: isUserInSupervisorRole() ? false : true,\r\n selectedDepartment: '',\r\n selectedWorkType: '',\r\n selectedUser: '',\r\n selectedAsset: '',\r\n workAssets: [],\r\n printBatchItems: [],\r\n allWorkOrders: [],\r\n isOverdueWork: false,\r\n isDueThisWeek: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //console.log({ REACT_APP_WOC_API_URL: process.env.REACT_APP_WOC_API_URL });\r\n\r\n // get work orders from services\r\n const loggedUser = getLoggedInUser();\r\n UserAPI.GetUser(loggedUser.id).then((user) => {\r\n this.setState({\r\n User: user.data,\r\n selectedDepartment: user.data.department,\r\n });\r\n UserAPI.SetLoggedInUser(this.state.User);\r\n this.__getActiveWorkOrders();\r\n this.__getDepartments();\r\n });\r\n }\r\n\r\n __getDepartments = () => {\r\n CrudOperations.Get('Departments')\r\n .then((res) => {\r\n this.setState({ departments: res.data });\r\n //console.log(this.state.departments);\r\n })\r\n .catch((err) => {\r\n console.log('Error fetching departments :: ', err);\r\n });\r\n };\r\n\r\n __getActiveWorkOrders = () => {\r\n //console.log(department);\r\n workorderService\r\n// .GetFeature('FACILITYID','SSR0815')\r\n .GetWorkOrders(this.props.config)\r\n .then(async (res) => { //all work orders in the system\r\n let notCompletedWorkArray = [];\r\n let isOverdueWork = this.state.isOverdueWork;\r\n let isDueThisWeek = this.state.isDueThisWeek;\r\n const view = workorderService.mapView();\r\n// if (view !== null && view !== undefined) {\r\n workorderService.__clearFlushSelectedWork(view);\r\n// }\r\n const user_role = workorderService.GetUserRole();\r\n //console.log(user_role);\r\n\r\n // user assets\r\n const loggeduser = getLoggedInUser();\r\n const { data } = await CrudOperations.GetByID(\r\n 'GisConfiguration/GetGisServicesByUserID',\r\n loggeduser.id\r\n );\r\n\r\n WorkOrderFilter.SetUserAssets(data);\r\n\r\n // filter map active work order per user\r\n// const userType = workorderService.GetUserRole();\r\n const loggedUser = getLoggedInUser();\r\n /* WorkOrderFilter.FilterCompletedWork(\r\n this.state.User.department,\r\n this.state.selectedAsset,\r\n userType,\r\n loggedUser.id\r\n ); */\r\n\r\n //const todaysDate = new Date().getTime();\r\n res.features.map((f) => { //FILTER WORKORDERS BY USER ROLE FOR LISTING\r\n switch (f.attributes.Status.toUpperCase()) {\r\n case 'COMPLETED':\r\n break;\r\n case 'ARCHIVED': // 9/29/2023 DMM ARCHIVE\r\n break;\r\n default:\r\n switch (user_role) {\r\n case 'manager':\r\n case 'admin':\r\n notCompletedWorkArray.push(f);\r\n break;\r\n case 'supervisor':\r\n if (f.attributes.DepartmentName === loggedUser.department) {\r\n notCompletedWorkArray.push(f);\r\n }\r\n break;\r\n case 'field':\r\n // only load services assigned to me\r\n // only load unassigned in services I am part of\r\n //console.log(f.attributes.AssetName);\r\n/* if (data.length > 0) {\r\n data.map((s, idx) => {\r\n if (s.name === f.attributes.AssetName) {\r\n notCompletedWorkArray.push(f);\r\n }\r\n });\r\n } */\r\n\r\n/* if ((f.attributes.AssignedToUID === loggedUser.id) || ((f.attributes.Status === 'Unassigned') && (f.attributes.DepartmentName === loggedUser.department))) {\r\n notCompletedWorkArray.push(f);\r\n } */\r\n\r\n if (f.attributes.AssignedToUID === loggedUser.id) {\r\n notCompletedWorkArray.push(f);\r\n } else {\r\n if (f.attributes.Status === 'Unassigned') {\r\n if (data.length > 0) {\r\n data.map((s, idx) => {\r\n if (s.name === f.attributes.AssetName) {\r\n notCompletedWorkArray.push(f);\r\n }\r\n });\r\n }\r\n }\r\n } \r\n\r\n break;\r\n }\r\n break;\r\n }\r\n });\r\n\r\n// console.log(notCompletedWorkArray);\r\n\r\n // get work types\r\n this.__getWorkTypesList(notCompletedWorkArray);\r\n\r\n // get Asset names\r\n this.__getWorkAssetsList(notCompletedWorkArray);\r\n\r\n this.__getWorkListUsers(notCompletedWorkArray);\r\n\r\n // Sort work orders from newest to oldest // default\r\n// notCompletedWorkArray = this.sortDescending(notCompletedWorkArray); //\r\n notCompletedWorkArray = this.sortAscending(notCompletedWorkArray);\r\n setTimeout(() => {\r\n this.setState({\r\n workorders: notCompletedWorkArray,\r\n userAssets: data,\r\n isOverdueWork,\r\n isDueThisWeek,\r\n isLoading: false,\r\n });\r\n workorderService.SetListWorkOrders(this.state.workorders); //the filtered work orders based on user and unassigned in DEPT\r\n var selectedWorkID = new URLSearchParams(window.location.search).get(\r\n 'id'\r\n );\r\n if (selectedWorkID) {\r\n const _link = document.getElementById(`wo-${selectedWorkID}`);\r\n if (_link) {\r\n _link.click();\r\n _link.scrollIntoView({\r\n behavior: 'smooth',\r\n //block: \"end\",\r\n //inline: \"nearest\"\r\n });\r\n } else {\r\n // this is a completed work\r\n // get the selected work\r\n// this.__showCompletedWorkDetails(selectedWorkID); //changed 10/3/2023 DMM for archived\r\n this.__showWorkOrderDetailsBasedOnStatus(selectedWorkID);\r\n }\r\n // console.log(this.state.workorders);\r\n } else {\r\n// this.zoomToList(); //DMM 12/6/2022 - stopped default behavior regarding zoom\r\n }\r\n }, 3000);\r\n })\r\n .catch((err) => console.log('Error :: ', err));\r\n };\r\n\r\n __showWorkOrderDetailsBasedOnStatus = (globalID) => {\r\n setTimeout(() => {\r\n workorderService.GetManagedOrderDetails(globalID)\r\n .then(workOrder => {\r\n \r\n if (workOrder.data.status === \"Archived\") {\r\n // Archived Work Order Logic\r\n this.__viewArchiveDetails(workOrder.data);\r\n \r\n } else {\r\n // Completed Work Order Logic\r\n const _view = workorderService.mapView();\r\n const workOrdersFlayer = _view.map.findLayerById('workOrders');\r\n const query = workOrdersFlayer.createQuery();\r\n query.where = `GlobalID = '${globalID}'`;\r\n query.outFields = ['*'];\r\n query.returnGeometry = true;\r\n \r\n workOrdersFlayer.queryFeatures(query).then((res) => {\r\n if (res.features.length > 0) {\r\n this.__viewWorkOrderDetails(res.features[0]);\r\n // Zoom and highlight the completed work\r\n const { geometry } = res.features[0];\r\n workorderService.GoToSelectedWork(geometry, _view);\r\n workorderService.__flushSelectedWork(geometry, _view);\r\n }\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n console.error('There was a problem retrieving order details:', error.message);\r\n });\r\n }, 2000);\r\n };\r\n \r\n // Presently ignored / replaced with __showWorkOrderDetailsBasedOnStatus\r\n __showCompletedWorkDetails = (globalID) => {\r\n setTimeout(() => {\r\n const showCompletedWorkBtn = document.getElementById(\r\n 'tooltipCompletedWork'\r\n );\r\n const _view = workorderService.mapView();\r\n const workOrdersFlayer = _view.map.findLayerById('workOrders');\r\n const query = workOrdersFlayer.createQuery();\r\n query.where = `GlobalID = '${globalID}'`;\r\n query.outFields = ['*'];\r\n query.returnGeometry = true;\r\n workOrdersFlayer.queryFeatures(query).then((res) => {\r\n if (res.features.length > 0) {\r\n this.__viewWorkOrderDetails(res.features[0]);\r\n // Zoom and highlight the completed work\r\n const { geometry } = res.features[0];\r\n workorderService.GoToSelectedWork(geometry, _view);\r\n workorderService.__flushSelectedWork(geometry, _view);\r\n }\r\n });\r\n }, 2000);\r\n };\r\n\r\n // Presently ignored / replaced with __showWorkOrderDetailsBasedOnStatus\r\n __showArchivedWorkDetails = (globalID) => {\r\n setTimeout(() => {\r\n workorderService.GetManagedOrderDetails(globalID)\r\n .then(workOrder => {\r\n this.__viewWorkOrderDetails(workOrder);\r\n })\r\n .catch(error => {\r\n console.error('There was a problem retrieving order details:', error.message);\r\n });\r\n }, 2000);\r\n };\r\n\r\n /*\r\n __showCompletedWorkDetails = (globalID) => {\r\n setTimeout(() => {\r\n const apiUrl = `https://localhost:44308/api/WorkOrders/GetByGlobalID/${globalID}`;\r\n\r\n fetch(apiUrl)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n return response.json();\r\n })\r\n .then(workOrder => {\r\n this.__viewWorkOrderDetails(workOrder);\r\n })\r\n .catch(error => {\r\n console.error('There was a problem with the fetch operation:', error.message);\r\n });\r\n }, 2000);\r\n };\r\n*/\r\n\r\n \r\n __getWorkTypesList = (orders) => {\r\n let workTypes = [];\r\n orders.map((r) => {\r\n workTypes.push(r.attributes.WorkType);\r\n });\r\n workTypes = [...new Set(workTypes)].sort();\r\n\r\n this.setState({ workTypes });\r\n };\r\n __getWorkAssetsList = (orders) => {\r\n let workAssets = [];\r\n orders.map((r) => {\r\n workAssets.push(r.attributes.AssetName);\r\n });\r\n workAssets = [...new Set(workAssets)].sort();\r\n\r\n this.setState({ workAssets });\r\n };\r\n __getWorkListUsers = (orders) => {\r\n let workListUsers = [];\r\n orders.map((r) => {\r\n if (r.attributes.AssignedToID === '') {\r\n } else {\r\n workListUsers.push(r.attributes.AssignedToID);\r\n }\r\n });\r\n workListUsers = [...new Set(workListUsers)].sort();\r\n\r\n this.setState({ workListUsers });\r\n };\r\n\r\n __setWorkTypes = (department) => {\r\n let workTypes = [];\r\n this.state.workorders.map((w) => {\r\n if (department === '') {\r\n workTypes.push(w.attributes.WorkType);\r\n } else {\r\n if (w.attributes.DepartmentName === department) { \r\n workTypes.push(w.attributes.WorkType);\r\n }\r\n }\r\n });\r\n workTypes = [...new Set(workTypes)].sort();\r\n this.setState({ workTypes });\r\n };\r\n\r\n sortDescending = (arr) => {\r\n arr = arr.sort((a, b) => {\r\n return b.attributes.PlannedDate - a.attributes.PlannedDate;\r\n });\r\n\r\n return arr;\r\n };\r\n\r\n sortAscending = (arr) => {\r\n return this.sortDescending(arr).reverse();\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n renderStatus(status) {\r\n switch (status) {\r\n case 'Unassigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Assigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Mine':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n\r\n default:\r\n return <>;\r\n break;\r\n }\r\n }\r\n\r\n resetOrdersHilight = () => {\r\n //const items = document.querySelectorAll('workorder-item');\r\n const elements = document.getElementsByClassName('workorder-item');\r\n for (let i = 0; i < elements.length; i++) {\r\n const btn = elements[i].children[elements[i].children.length - 1];\r\n\r\n if (btn.classList.contains('btn-work-order-detail-hidden')) {\r\n } else {\r\n btn.classList.add('btn-work-order-detail-hidden');\r\n }\r\n elements[i].classList.remove('active-work-order');\r\n }\r\n };\r\n\r\n __ZoomToWorkOrder = (workorder, evt) => {\r\n let __LinkTag = evt.target,\r\n _detailsBtn;\r\n switch (evt.target.tagName) {\r\n case 'A':\r\n _detailsBtn = evt.target.children[evt.target.children.length - 1];\r\n break;\r\n default:\r\n // get a element\r\n __LinkTag = evt.target.parentNode.closest('a');\r\n _detailsBtn = __LinkTag.children[__LinkTag.children.length - 1];\r\n break;\r\n }\r\n\r\n const view = workorderService.mapView();\r\n this.resetOrdersHilight();\r\n\r\n if (evt.target.tagName === 'INPUT' || evt.target.tagName === 'LABEL') {\r\n workorderService.__flushSelectedWork(workorder.geometry, view);\r\n } else {\r\n workorderService.GoToSelectedWork(workorder.geometry, view);\r\n workorderService.__flushSelectedWork(workorder.geometry, view);\r\n __LinkTag.classList.add('active-work-order');\r\n _detailsBtn.classList.remove('btn-work-order-detail-hidden');\r\n }\r\n };\r\n\r\n/*\r\n __viewWorkOrderDetails = (workOrder) => {\r\n let _work_details_option;\r\n \r\n if (workOrder.status === \"Archived\") {\r\n // Define the logic or path for when the status is \"Archived\"\r\n _work_details_option = 'WorkOrderOfficeArchivedDetails'; // Replace with the appropriate option for archived work orders\r\n } else {\r\n _work_details_option =\r\n workorderService.GetUserRole() === 'field'\r\n ? 'WorkOrderDetails'\r\n : 'WorkOrderOfficeDetails';\r\n }\r\n \r\n this.props.renderComponent(\r\n _work_details_option,\r\n workOrder,\r\n this.state.User\r\n );\r\n };\r\n */\r\n\r\n __viewArchiveDetails = (workOrder) => {\r\n \r\n let _work_details_option ='WorkOrderOfficeArchiveDetails' ;\r\n \r\n this.props.renderComponent(\r\n _work_details_option,\r\n workOrder,\r\n this.state.User\r\n );\r\n };\r\n\r\n __viewWorkOrderDetails = (workOrder) => {\r\n const _work_details_option =\r\n workorderService.GetUserRole() === 'field'\r\n ? 'WorkOrderDetails'\r\n : 'WorkOrderOfficeDetails';\r\n\r\n this.props.renderComponent(\r\n _work_details_option,\r\n workOrder,\r\n this.state.User\r\n );\r\n }; \r\n\r\n __toggleBatchPrintItem = (isChecked, workorder) => {\r\n const printBatchItems = this.state.printBatchItems;\r\n if (isChecked) {\r\n printBatchItems.push(workorder);\r\n } else {\r\n // remove item\r\n const itemIndex = printBatchItems.findIndex(\r\n (w) => w.attributes.GlobalID === workorder.attributes.GlobalID\r\n );\r\n if (itemIndex > -1) {\r\n printBatchItems.splice(itemIndex, 1);\r\n }\r\n }\r\n this.setState({ printBatchItems });\r\n };\r\n\r\n __renderComponent() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n if (this.state.workorders.length > 0) {\r\n const user_role = workorderService.GetUserRole();\r\n const isSupervisorOrField =\r\n user_role === 'supervisor' || user_role === 'field';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.state.workAssets.map((a, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n this.__filterWorkOrdersByType(evt, user_role)\r\n }\r\n >\r\n \r\n {this.state.workTypes.map((t, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n {user_role === 'manager' ||\r\n (workorderService.IsAdmin() && (\r\n
    \r\n \r\n \r\n \r\n this.__filterWorkOrdersByUser(evt, user_role)\r\n }\r\n >\r\n \r\n {this.state.workListUsers.map((u, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n
    \r\n ))}\r\n\r\n{/* {isSupervisorOrField && ( */}\r\n
    \r\n {(user_role === 'supervisor' || user_role === 'manager') && (\r\n \r\n \r\n \r\n this.__filterWorkOrdersByUser(evt, user_role)\r\n }\r\n >\r\n \r\n {this.state.workListUsers.map((u, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )}\r\n
    \r\n{/* )} */}\r\n\r\n {/*

    Overdue work

    */}\r\n
    \r\n {this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(this.state.selectedAsset)\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(this.state.selectedWorkType)\r\n )\r\n .filter((u) =>\r\n u.attributes.AssignedToID.includes(this.state.selectedUser)\r\n )\r\n .map((wo, idx) => (\r\n this.__ZoomToWorkOrder(wo, e)}\r\n >\r\n \r\n this.__toggleBatchPrintItem(evt.target.checked, wo)\r\n }\r\n />\r\n
    \r\n
    Due Date:
    \r\n \r\n {wo.attributes.IsRecurring === 'Yes' && (\r\n <>\r\n {' '}\r\n \r\n )}\r\n\r\n {workorderService.GetDueDateFormatted(\r\n wo.attributes.PlannedDate,\r\n wo.attributes.Status\r\n )}\r\n \r\n
    \r\n
    \r\n
    {wo.attributes.WorkType}
    \r\n \r\n {new Date(\r\n wo.attributes.DateInitiated\r\n ).toLocaleDateString()}\r\n \r\n
    \r\n \r\n Asset: {wo.attributes.AssetName} - ID:{' '}\r\n {wo.attributes.WOID}{' '}\r\n \r\n
    \r\n \r\n Assigned To:{' '}\r\n \r\n {' '}\r\n {wo.attributes.AssignedToID === '' ||\r\n wo.attributes.AssignedToID === null\r\n ? 'Unassigned'\r\n : wo.attributes.AssignedToID}{' '}\r\n \r\n \r\n
    \r\n \r\n Location: {wo.attributes.LocationAddress}\r\n \r\n \r\n {this.renderStatus(wo.attributes.Status)}\r\n \r\n\r\n this.__viewWorkOrderDetails(wo)}\r\n >\r\n Details\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 __createNewWorkOrder = () => {\r\n this.props.renderComponent('CreateWorkOrder');\r\n // ReactDOM.render(, document.getElementById('right-content-wrapper'))\r\n };\r\n\r\n sortList = () => {\r\n let sortText, sortIcon;\r\n switch (this.state.sortText) {\r\n case 'Newest':\r\n sortText = 'Oldest';\r\n //sortIcon = 'dripicons-arrow-thin-up';\r\n sortIcon = 'dripicons-arrow-thin-up';\r\n if (this.state.workorders.length > 0) {\r\n let workorders = this.sortAscending(this.state.workorders);\r\n this.setState({ workorders });\r\n }\r\n break;\r\n\r\n case 'Oldest':\r\n sortText = 'Newest';\r\n sortIcon = 'dripicons-arrow-thin-down';\r\n if (this.state.workorders.length > 0) {\r\n let workorders = this.sortDescending(this.state.workorders);\r\n this.setState({ workorders });\r\n }\r\n break;\r\n }\r\n\r\n this.reorderItemsBatchChecked();\r\n this.setState({ sortText, sortIcon });\r\n };\r\n\r\n reorderItemsBatchChecked = () => {\r\n if (this.state.printBatchItems.length > 0) {\r\n this.uncheckListSelection();\r\n setTimeout(() => {\r\n this.uncheckListSelection();\r\n }, 20);\r\n }\r\n };\r\n\r\n uncheckListSelection = () => {\r\n const elements = document.getElementsByClassName('wo-batch-toggle-item');\r\n for (let i = 0; i < elements.length; i++) {\r\n const parentDiv = elements[i];\r\n const checkbox = parentDiv.children[0];\r\n\r\n this.state.printBatchItems.map((w) => {\r\n if (w.attributes.OBJECTID === parseInt(checkbox.id)) {\r\n //checkbox.click();\r\n checkbox.checked = !checkbox.checked;\r\n }\r\n });\r\n }\r\n };\r\n\r\n toggleCompleteWorkVisibilityFieldUser = () => {\r\n const loggedUser = getLoggedInUser();\r\n switch (this.state.toggleCompleteText) {\r\n case 'Show Completed':\r\n this.setState({\r\n toggleCompleteText: 'Hide Completed',\r\n toggleCompleteIcon: 'mdi mdi-eye-off-outline',\r\n completedWorkToolTip: 'Hide completed on Map',\r\n });\r\n /* WorkOrderFilter.FilterUserWorkAndShowCompletedFieldUser(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n loggedUser.id\r\n ); */\r\n setTimeout(() => {\r\n this.__FilterWorkOrders();\r\n }, 100);\r\n break;\r\n\r\n case 'Hide Completed':\r\n this.setState({\r\n toggleCompleteText: 'Show Completed',\r\n toggleCompleteIcon: 'mdi mdi-eye-outline',\r\n completedWorkToolTip: 'Show completed on Map',\r\n });\r\n /* WorkOrderFilter.FilterUserWorkAndHideCompletedFieldUser(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n loggedUser.id\r\n ); */\r\n setTimeout(() => {\r\n this.__FilterWorkOrders();\r\n }, 100);\r\n break;\r\n }\r\n };\r\n\r\n toggleCompleteWorkVisibility = (userRole) => {\r\n switch (this.state.toggleCompleteText) {\r\n case 'Show Completed':\r\n this.setState({\r\n toggleCompleteText: 'Hide Completed',\r\n toggleCompleteIcon: 'mdi mdi-eye-off-outline',\r\n completedWorkToolTip: 'Hide completed on Map',\r\n });\r\n WorkOrderFilter.FilterUserWorkAndShowCompleted(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n this.state.selectedUser,\r\n userRole\r\n );\r\n break;\r\n\r\n case 'Hide Completed':\r\n this.setState({\r\n toggleCompleteText: 'Show Completed',\r\n toggleCompleteIcon: 'mdi mdi-eye-outline',\r\n completedWorkToolTip: 'Show completed on Map',\r\n });\r\n WorkOrderFilter.FilterUserWorkAndHideCompleted(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n this.state.selectedUser,\r\n userRole\r\n );\r\n break;\r\n }\r\n };\r\n\r\n zoomToList = () => {\r\n // console.log(this.state.workorders);\r\n const view = workorderService.mapView();\r\n view.goTo(this.state.workorders).catch((err) => console.log(err)); // Zoom to the current list of work orders\r\n workorderService.__clearFlushSelectedWork(view);\r\n\r\n if (this.state.printBatchItems.length > 0) {\r\n this.showSelected();\r\n }\r\n };\r\n\r\n __FilterWorkOrders = () => {\r\n const __filteredArray = this.state.workorders\r\n .filter((w) => w.attributes.AssetName.includes(this.state.selectedAsset))\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(this.state.selectedWorkType)\r\n )\r\n .filter((u) =>\r\n u.attributes.AssignedToID.includes(this.state.selectedUser)\r\n );\r\n WorkOrderFilter.FilterMapWorkOrders(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n this.state.selectedUser,\r\n __filteredArray,\r\n this.state.toggleCompleteText === 'Hide Completed' ? false : true\r\n );\r\n };\r\n\r\n refreshList = () => {\r\n this.setState({ isLoading: true });\r\n this.resetOrdersHilight();\r\n this.__getActiveWorkOrders();\r\n };\r\n\r\n printWorkOrdersInBatch = () => {\r\n if (this.state.printBatchItems.length > 0) {\r\n // set selected work orders batch\r\n workorderService.SetWorkOrdersBatchList(this.state.printBatchItems);\r\n WorkOrderFilter.SetWorkOrdersBatchList(this.state.printBatchItems);\r\n } else {\r\n // set filtered work\r\n const __filteredWork = [];\r\n this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(this.state.selectedAsset)\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(this.state.selectedWorkType)\r\n )\r\n .map((fw) => {\r\n __filteredWork.push(fw);\r\n });\r\n workorderService.SetWorkOrdersBatchList(__filteredWork);\r\n WorkOrderFilter.SetWorkOrdersBatchList(__filteredWork);\r\n }\r\n\r\n this.props.history.push('/batch/print');\r\n };\r\n\r\n __filterWorkOrdersByAsset = (evt) => {\r\n //this.__setWorkTypes(evt.target.value);\r\n this.uncheckListSelection();\r\n\r\n this.setState({\r\n //selectedDepartment: evt.target.value,\r\n selectedAsset: evt.target.value,\r\n printBatchItems: [],\r\n });\r\n\r\n setTimeout(() => {\r\n this.__FilterWorkOrders();\r\n this.toggleWorkListBackGroundSelection();\r\n }, 200);\r\n };\r\n\r\n __filterWorkOrdersByType = (evt, role) => {\r\n this.setState({\r\n selectedWorkType: evt.target.value,\r\n printBatchItems: [],\r\n });\r\n setTimeout(() => {\r\n const __filteredArray = this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(this.state.selectedAsset)\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(this.state.selectedWorkType)\r\n )\r\n .filter((u) =>\r\n u.attributes.AssignedToID.includes(this.state.selectedUser)\r\n );\r\n const loggedUser = getLoggedInUser();\r\n this.uncheckListSelection();\r\n\r\n WorkOrderFilter.FilterMapWorkOrders(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n this.state.selectedUser,\r\n __filteredArray,\r\n this.state.toggleCompleteText === 'Hide Completed' ? false : true\r\n );\r\n\r\n /* WorkOrderFilter.FilterMapWorkOrderByType(\r\n this.state.selectedWorkType,\r\n this.state.selectedAsset,\r\n role,\r\n loggedUser.id,\r\n __filteredArray,\r\n this.state.selectedUser\r\n ); */\r\n\r\n this.toggleWorkListBackGroundSelection();\r\n }, 200);\r\n };\r\n\r\n __filterWorkOrdersByUser = (evt, role) => {\r\n this.setState({\r\n selectedUser: evt.target.value,\r\n printBatchItems: [],\r\n });\r\n setTimeout(() => {\r\n const __filteredArray = this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(this.state.selectedAsset)\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(this.state.selectedWorkType)\r\n )\r\n .filter((u) =>\r\n u.attributes.AssignedToID.includes(this.state.selectedUser)\r\n );\r\n const loggedUser = getLoggedInUser();\r\n this.uncheckListSelection();\r\n\r\n WorkOrderFilter.FilterMapWorkOrders(\r\n this.state.selectedDepartment,\r\n this.state.selectedAsset,\r\n this.state.selectedWorkType,\r\n this.state.selectedUser,\r\n __filteredArray,\r\n this.state.toggleCompleteText === 'Hide Completed' ? false : true\r\n );\r\n\r\n /* WorkOrderFilter.FilterMapWorkOrderByUser(\r\n this.state.selectedUser,\r\n this.state.selectedDepartment,\r\n role,\r\n loggedUser.id,\r\n __filteredArray\r\n ); */\r\n\r\n this.toggleWorkListBackGroundSelection();\r\n }, 200);\r\n };\r\n\r\n showSelected = () => {\r\n const view = workorderService.mapView();\r\n const workorders = this.state.workorders;\r\n const allWorkOrders = this.state.allWorkOrders;\r\n if (this.state.allWorkOrders.length === 0) {\r\n this.setState({\r\n workorders: this.state.printBatchItems,\r\n allWorkOrders: workorders,\r\n });\r\n this.reorderItemsBatchChecked();\r\n this.toggleWorkListBackGroundSelection(true);\r\n workorderService.SetWorkOrdersBatchList(this.state.printBatchItems);\r\n WorkOrderFilter.SetWorkOrdersBatchList(this.state.printBatchItems);\r\n setTimeout(() => {\r\n WorkOrderFilter.__filterWorkOrdersSelection();\r\n\r\n view.goTo(this.state.workorders).catch((err) => {\r\n console.log(err);\r\n });\r\n }, 500);\r\n } else {\r\n this.setState({\r\n workorders: allWorkOrders,\r\n allWorkOrders: [],\r\n printBatchItems: [],\r\n });\r\n this.uncheckListSelection();\r\n this.toggleWorkListBackGroundSelection();\r\n setTimeout(() => {\r\n view.goTo(this.state.workorders).catch((err) => {\r\n console.log(err);\r\n });\r\n }, 500);\r\n }\r\n setTimeout(() => {\r\n // remove selection filter\r\n // workorderService.__removeSelectionFilter();\r\n const loggedUser = getLoggedInUser();\r\n WorkOrderFilter.FilterMapWorkOrderByType(\r\n this.state.selectedWorkType,\r\n this.state.selectedDepartment,\r\n workorderService.GetUserRole(),\r\n loggedUser.id,\r\n this.state.workorders\r\n );\r\n // filter Types\r\n this.__setWorkTypes(this.state.selectedDepartment);\r\n workorderService.__clearFlushSelectedWork(view);\r\n //this.zoomToList();\r\n }, 20);\r\n };\r\n\r\n toggleWorkListBackGroundSelection = (isAdd = false) => {\r\n const listContentDiv = document.getElementById('layerInfoContentDisplay');\r\n isAdd\r\n ? listContentDiv.classList.add('list-selected-bg')\r\n : listContentDiv.classList.remove('list-selected-bg');\r\n };\r\n\r\n renderListComponent() {\r\n const userRole = workorderService.GetUserRole();\r\n switch (userRole) {\r\n case 'field': // the user is from the field crew role\r\n return (\r\n \r\n \r\n
    \r\n \r\n {/* {this.state.sortText} */}Sort{' '}\r\n \r\n \r\n \r\n Sort by Due Date\r\n \r\n \r\n {' '}\r\n {/* {this.state.toggleCompleteText} */}\r\n \r\n \r\n {this.state.completedWorkToolTip}\r\n \r\n
    \r\n 0\r\n {\r\n this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(\r\n this.state.selectedAsset\r\n )\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(\r\n this.state.selectedWorkType\r\n )\r\n ).length\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    {this.__renderComponent()}
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n break;\r\n\r\n default: //user types other than \"Field User\"\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n Create New Work Order\r\n \r\n \r\n {/* {this.state.sortText} */}Sort{' '}\r\n \r\n \r\n \r\n Sort by Due Date\r\n \r\n this.toggleCompleteWorkVisibility(userRole)}\r\n >\r\n {' '}\r\n \r\n \r\n {this.state.completedWorkToolTip}\r\n \r\n
    \r\n 0\r\n {\r\n this.state.workorders\r\n .filter((w) =>\r\n w.attributes.AssetName.includes(\r\n this.state.selectedAsset\r\n )\r\n )\r\n .filter((t) =>\r\n t.attributes.WorkType.includes(\r\n this.state.selectedWorkType\r\n )\r\n )\r\n .filter((u) =>\r\n u.attributes.AssignedToID.includes(\r\n this.state.selectedUser\r\n )\r\n ).length\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    {this.__renderComponent()}
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n break;\r\n }\r\n }\r\n\r\n render() {\r\n return {this.renderListComponent()};\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport default withRouter(connect(mapStateToProps)(WorkOrdersList));\r\n","import isEqual from 'lodash.isequal';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport asyncLoading from 'react-async-loader';\r\n\r\nclass GoogleStreetView extends React.Component {\r\n constructor() {\r\n super();\r\n this.streetView = null;\r\n }\r\n\r\n componentDidMount() {\r\n this.initialize(this.node, this.props);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n this.initialize(this.node, prevProps);\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.streetView) {\r\n this.props.googleMaps.event.clearInstanceListeners(this.streetView);\r\n }\r\n }\r\n\r\n initialize(canvas, prevProps) {\r\n if (this.props.googleMaps && this.streetView == null) {\r\n this.streetView = new this.props.googleMaps.StreetViewPanorama(\r\n canvas,\r\n this.props.streetViewPanoramaOptions\r\n );\r\n\r\n this.streetView.addListener('pano_changed', () => {\r\n if (this.props.onPanoChanged) {\r\n this.props.onPanoChanged(this.streetView.getPano());\r\n }\r\n });\r\n\r\n this.streetView.addListener('position_changed', () => {\r\n if (this.props.onPositionChanged) {\r\n this.props.onPositionChanged(this.streetView.getPosition());\r\n }\r\n });\r\n\r\n this.streetView.addListener('pov_changed', () => {\r\n if (this.props.onPovChanged) {\r\n this.props.onPovChanged(this.streetView.getPov());\r\n }\r\n });\r\n\r\n this.streetView.addListener('visible_changed', () => {\r\n if (this.props.onVisibleChanged) {\r\n this.props.onVisibleChanged(this.streetView.getVisible());\r\n }\r\n });\r\n\r\n this.streetView.addListener('zoom_changed', () => {\r\n if (this.props.onZoomChanged) {\r\n this.props.onZoomChanged(this.streetView.getZoom());\r\n }\r\n });\r\n }\r\n if (\r\n this.streetView !== null &&\r\n this.props.streetViewPanoramaOptions &&\r\n !isEqual(\r\n this.props.streetViewPanoramaOptions,\r\n prevProps.streetViewPanoramaOptions\r\n )\r\n ) {\r\n const { zoom, pov, position, ...otherOptions } =\r\n this.props.streetViewPanoramaOptions;\r\n const {\r\n zoom: prevZoom,\r\n pov: prevPov,\r\n position: prevPos,\r\n ...prevOtherOptions\r\n } = prevProps.streetViewPanoramaOptions;\r\n if (!isEqual(zoom, prevZoom)) {\r\n this.streetView.setZoom(zoom);\r\n }\r\n if (!isEqual(pov, prevPov)) {\r\n this.streetView.setPov(pov);\r\n }\r\n if (!isEqual(position, prevPos)) {\r\n this.streetView.setPosition(position);\r\n }\r\n if (!isEqual(otherOptions, prevOtherOptions)) {\r\n this.streetView.setOptions(otherOptions);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    (this.node = node)} />\r\n );\r\n }\r\n}\r\n\r\nGoogleStreetView.propTypes = {\r\n /* eslint-disable react/no-unused-prop-types */\r\n apiKey: PropTypes.string,\r\n streetViewPanoramaOptions: PropTypes.object,\r\n onPositionChanged: PropTypes.func,\r\n onPovChanged: PropTypes.func,\r\n onZoomChanged: PropTypes.func,\r\n onPanoChanged: PropTypes.func,\r\n onVisibleChanged: PropTypes.func,\r\n googleMaps: PropTypes.object,\r\n};\r\n\r\nGoogleStreetView.defaultProps = {\r\n apiKey: null,\r\n streetViewPanoramaOptions: {\r\n position: { lat: 46.9171876, lng: 17.8951832 },\r\n pov: { heading: 0, pitch: 0 },\r\n zoom: 1,\r\n },\r\n googleMaps: {},\r\n onPositionChanged: () => {},\r\n onPovChanged: () => {},\r\n onZoomChanged: () => {},\r\n onPanoChanged: () => {},\r\n onVisibleChanged: () => {},\r\n};\r\n\r\nfunction mapScriptsToProps({ apiKey }) {\r\n if (!apiKey) return {};\r\n\r\n return {\r\n googleMaps: {\r\n globalPath: 'google.maps',\r\n url: `https://maps.googleapis.com/maps/api/js?key=${apiKey}`,\r\n jsonp: true,\r\n },\r\n };\r\n}\r\n\r\nexport default asyncLoading(mapScriptsToProps)(GoogleStreetView);\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Modal, ModalBody, ModalHeader } from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport { WorkOrderFilter } from '../../utils/filters/filter';\r\nimport StreetView from '../StreetView/StreetView';\r\nimport './map.style.css';\r\nimport UtilityToggler from './UtilityToggler';\r\n\r\nclass WorkOrdersMapAction extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n User: null,\r\n isFieldRole: true,\r\n mapview: null,\r\n modal: false,\r\n isFieldCrew: false,\r\n userType: 'field',\r\n WOCAssets: [],\r\n userApplicationSettings: null,\r\n selectedAsset: '',\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.openModalWithHeaderClass = this.openModalWithHeaderClass.bind(this);\r\n this.openModalWithBodyClass = this.openModalWithBodyClass.bind(this);\r\n }\r\n\r\n /**\r\n * Show/hide the modal\r\n */\r\n /*:: toggle: () => void */\r\n toggle = () => {\r\n this.setState((prevState) => ({\r\n modal: !prevState.modal,\r\n }));\r\n };\r\n\r\n /**\r\n * Opens modal with custom header\r\n */\r\n /*:: openModalWithHeaderClass: () => void */\r\n openModalWithHeaderClass = (className) => {\r\n this.setState({ headerClassName: className });\r\n this.toggle();\r\n };\r\n\r\n /**\r\n * Opens modal with custom body\r\n */\r\n /*:: openModalWithBodyClass: () => void */\r\n openModalWithBodyClass = (className) => {\r\n this.setState({ headerClassName: className, bodyClass: className });\r\n this.toggle();\r\n };\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n UserAPI.GetUser(loggedUser.id).then(async (user) => {\r\n const __user__settings = await CrudOperations.GetByID(\r\n 'UserSettings',\r\n user.data.id\r\n );\r\n //console.log(__user__settings);\r\n workorderService.SetUserAppSettings(__user__settings.data);\r\n let userType = workorderService.GetUserRole();\r\n this.setState({\r\n User: user.data,\r\n userType,\r\n userApplicationSettings: __user__settings.data,\r\n });\r\n if (this.state.userType === 'field') {\r\n setTimeout(() => {\r\n const btn = document.getElementById('btnLeftPanelToggle');\r\n if (btn) {\r\n btn.click();\r\n }\r\n }, 20);\r\n }\r\n this.initMapAction();\r\n });\r\n }\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __GetDepartmentByID = (departmentID) => {\r\n \r\n/* if (layerName.toLowerCase().indexOf('sanitary') > -1) {\r\n return 'Water Wastewater';\r\n }\r\n if (layerName.toLowerCase().indexOf('water') > -1) {\r\n return 'Water';\r\n }\r\n if (layerName.toLowerCase().indexOf('storm') > -1) {\r\n return 'Storm';\r\n }\r\n if (layerName.toLowerCase().indexOf('electric') > -1) {\r\n return 'Electric';\r\n }\r\n if (layerName.toLowerCase().indexOf('signs') > -1) {\r\n return 'General Services';\r\n }\r\n if (layerName.toLowerCase().indexOf('trees') > -1) {\r\n return 'Parks & Recreation';\r\n }\r\n\r\n return 'Telecommunication'; */\r\n\r\n };\r\n\r\n selectExistingWorkFeature(view) {\r\n view.on('click', (event) => {\r\n if (\r\n document.getElementById('mapId').style.cursor !== 'crosshair' &&\r\n this.state.isFieldRole\r\n ) {\r\n view.hitTest(event).then((response) => {\r\n // If a user clicks on an incident feature, select the feature.\r\n if (response.results.length === 0) {\r\n //this.toggleEditingDivs('block', 'none');\r\n } else if (\r\n response.results[0].graphic &&\r\n response.results[0].graphic.layer.id === 'workOrders'\r\n ) {\r\n // navigate to field crew work option\r\n\r\n this.props.renderComponent('FieldWorkUpdate', response.results[0]);\r\n\r\n /* this.setState({ addFeatureDivVisible: false });\r\n this.selectFeature(\r\n response.results[0].graphic.attributes[this.state.featureLayer.objectIdField]\r\n );\r\n\r\n this.state.view.popup.visible = false; */\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n IsIsolationTraceEnabled = () => {\r\n const { IswaterIsolationTraceEnabled, IsCCTVEnabled } =\r\n workorderService.GetAdvancedFeaturesAvailability();\r\n if (IswaterIsolationTraceEnabled === 'true') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n IsCCTVEnabled = () => {\r\n const { IswaterIsolationTraceEnabled, IsCCTVEnabled } =\r\n workorderService.GetAdvancedFeaturesAvailability();\r\n if (IsCCTVEnabled === 'true') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n initMapAction = () => {\r\n loadModules([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/layers/FeatureLayer',\r\n 'esri/widgets/Legend',\r\n 'esri/widgets/Expand',\r\n 'esri/smartMapping/labels/clusters',\r\n 'esri/smartMapping/popup/clusters',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/core/promiseUtils',\r\n 'esri/widgets/Search',\r\n 'esri/widgets/Home',\r\n 'esri/widgets/Track',\r\n 'esri/widgets/ScaleBar',\r\n 'esri/config',\r\n 'esri/widgets/BasemapToggle',\r\n 'esri/Basemap',\r\n 'esri/layers/TileLayer',\r\n 'esri/layers/VectorTileLayer',\r\n 'esri/core/urlUtils',\r\n 'esri/tasks/Locator',\r\n ]).then(\r\n async ([\r\n Map,\r\n MapView,\r\n FeatureLayer,\r\n Legend,\r\n Expand,\r\n clusterLabelCreator,\r\n clusterPopupCreator,\r\n GraphicsLayer,\r\n promiseUtils,\r\n Search,\r\n Home,\r\n Track,\r\n ScaleBar,\r\n esriConfig,\r\n BasemapToggle,\r\n Basemap,\r\n TileLayer,\r\n VectorTileLayer,\r\n urlUtils,\r\n Locator,\r\n ]) => {\r\n esriConfig.request.interceptors.push({\r\n urls: /FeatureServer\\/\\d+$/,\r\n after: function (response) {\r\n response.data.supportedQueryFormats = 'JSON';\r\n },\r\n });\r\n\r\n if (this.props.config.proxyServer.length > 0) {\r\n for (\r\n let index = 0;\r\n index < this.props.config.proxyServer.length;\r\n index++\r\n ) {\r\n const { proxyUrl, urlPrefix } =\r\n this.props.config.proxyServer[index];\r\n\r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix,\r\n });\r\n }\r\n }\r\n\r\n const selectedWorkGLayer = new GraphicsLayer({\r\n id: 'selectedWorkGLayer',\r\n title: 'Selected Work',\r\n listMode: 'hide',\r\n });\r\n const assetHighlighterGLayer = new GraphicsLayer({\r\n id: 'assetHighlighterGLayer',\r\n listMode: 'hide',\r\n });\r\n const workCreateLocationGL = new GraphicsLayer({\r\n id: 'workCreateLocationGL',\r\n title: 'Created Work Location',\r\n listMode: 'hide',\r\n });\r\n const workLogLocationGL = new GraphicsLayer({\r\n id: 'workLogLocationGL',\r\n title: 'Log Work Location',\r\n listMode: 'hide',\r\n });\r\n const waterisolationTraceGL = new GraphicsLayer({\r\n id: 'waterisolationTraceGL',\r\n title: 'Water Isolation Trace',\r\n listMode: 'hide',\r\n });\r\n\r\n const updateWorkOrderAction = {\r\n title: 'Work Details',\r\n id: 'workorder-details-action',\r\n className: 'esri-icon-description',\r\n };\r\n\r\n const workOrdersFlayer = new FeatureLayer({\r\n id: 'workOrders',\r\n url: `${process.env.REACT_APP_WOC_BASE_SERVICE}FeatureServer/0`,\r\n title: 'Work orders',\r\n outFields: ['*'],\r\n popupTemplate: {\r\n title: '{Status}' + ' - ' + '{WOID}' + ' - ' + '{AssetName}',\r\n content: [\r\n {\r\n type: 'fields',\r\n fieldInfos: [\r\n {\r\n fieldName: 'DepartmentName',\r\n },\r\n {\r\n fieldName: 'WorkType',\r\n },\r\n {\r\n fieldName: 'AssignedToID',\r\n label: 'Work Assigned To',\r\n },\r\n {\r\n fieldName: 'LocationAddress',\r\n label: 'Address',\r\n },\r\n {\r\n fieldName: 'DateInitiated',\r\n label: 'Date Initiated',\r\n },\r\n {\r\n fieldName: 'DateCompleted',\r\n label: 'Date Completed',\r\n },\r\n ],\r\n },\r\n ],\r\n actions: [updateWorkOrderAction],\r\n },\r\n });\r\n\r\n \r\n// const lightBasemap = Basemap.fromId('streets-navigation-vector'); // DMM 12/13/2022\r\n// const nightBasemap = Basemap.fromId('streets-night-vector'); // DMM 12/13/2022\r\n const lightBasemap = Basemap.fromId(`${this.props.config.ESRImaps.id_base}`); // DMM 12/13/2022\r\n const nightBasemap = Basemap.fromId(`${this.props.config.ESRImaps.id_alternate}`); // DMM 12/13/2022\r\n\r\n\r\n/* const lightBasemap = new Basemap({\r\n baseLayers: [\r\n new VectorTileLayer({\r\n portalItem: {\r\n id: 'd216e606ad8843dda1ad8efd1dc2035c', // City streets basemap\r\n },\r\n }),\r\n ],\r\n title: 'Latest Basemap',\r\n id: 'mansfield-base-street',\r\n });\r\n*/\r\n\r\n/* WORKED WITH KG'S TEST BASE MAP\r\n const lightBasemap = new Basemap({\r\n baseLayers: [\r\n new TileLayer({\r\n url:'https://services1.arcgis.com/MEvzxYGCHO108ZxL/arcgis/rest/services/Mansfield_Basemap2_Tiles/MapServer',\r\n copyright: 'City of Mansfield, Ohio',\r\n }),\r\n ],\r\n title: 'Aerial Basemap',\r\n id: 'mansfield-base-imagery',\r\n });\r\n*/\r\n\r\n /*\r\n const nightBasemap = new Basemap({\r\n baseLayers: [\r\n new TileLayer({\r\n url:'https://gis.mansfieldcity.com/arcgis/rest/services/Imagery/Imagery2019_NAD_83_092319_1230/MapServer',\r\n copyright: 'City of Mansfield, Ohio',\r\n }),\r\n ],\r\n title: 'Aerial Basemap',\r\n id: 'mansfield-base-imagery',\r\n });\r\n*/\r\n\r\n const map = new Map({\r\n basemap: this.state.userApplicationSettings\r\n ? this.state.userApplicationSettings.themeName ===\r\n 'LEFT_SIDEBAR_THEME_LIGHT'\r\n ? lightBasemap\r\n : nightBasemap\r\n : nightBasemap, //'streets-night-vector', //'topo-vector',\r\n layers: [\r\n waterisolationTraceGL,\r\n assetHighlighterGLayer,\r\n workOrdersFlayer,\r\n selectedWorkGLayer,\r\n workCreateLocationGL,\r\n workLogLocationGL,\r\n ],\r\n });\r\n // add utility Layer\r\n const { data } = await CrudOperations.Get('Departments');\r\n workorderService.SetApplicationDepartments(data);\r\n\r\n const woc__assets = await workorderService.__addGISAssetsToMap(\r\n map,\r\n this.state.User\r\n );\r\n\r\n //console.log(woc__assets);\r\n\r\n // show the map at the element\r\n const { center, zoom } = this.props.config.mapConfig;\r\n const view = new MapView({\r\n map,\r\n /* constraints: {\r\n lods: TileInfo.create().lods,\r\n }, */\r\n highlightOptions: {\r\n color: [255, 255, 0, 1],\r\n haloOpacity: 0.9,\r\n fillOpacity: 0.2,\r\n },\r\n background: { color: '#f0f0e9' },\r\n container: 'mapId',\r\n center,\r\n zoom,\r\n });\r\n\r\n/* view.constraints = {\r\n maxZoom: 18,\r\n }; DMM 5/26/2022 */\r\n\r\n view.popup = {\r\n dockEnabled: true,\r\n dockOptions: {\r\n buttonEnabled: true,\r\n breakpoint: true,\r\n },\r\n };\r\n\r\n workorderService.SetMapView(view);\r\n WorkOrderFilter.SetMapView(view);\r\n\r\n setTimeout(() => {\r\n this.setState({ mapview: view, WOCAssets: woc__assets });\r\n }, 50);\r\n\r\n view.popup.watch('selectedFeature', (feature) => {\r\n if (feature) {\r\n var featureTemplate = feature.getEffectivePopupTemplate();\r\n if (featureTemplate.actions) {\r\n if (featureTemplate.title === 'Search result') {\r\n view.popup.close();\r\n return;\r\n }\r\n if (featureTemplate.actions.items.length > 0) {\r\n const isAppInEditMode = workorderService.GetAppEditMode();\r\n const isAppInDetailMode = workorderService.GetAppDetailMode();\r\n const gisAssetsAddUI = workorderService.GetAppInAddingAssets();\r\n\r\n featureTemplate.actions.items.map((action) => {\r\n switch (action.id) {\r\n case 'workorder-details-action':\r\n action.visible = !(isAppInDetailMode || isAppInEditMode);\r\n break;\r\n// case 'log-work-action':\r\n case 'create-work-action':\r\n case 'work-history-action':\r\n action.visible = !isAppInEditMode;\r\n break;\r\n case 'add-work-asset-action':\r\n action.visible = gisAssetsAddUI ? true : false;\r\n break;\r\n case 'water-isolation-action':\r\n if (this.IsIsolationTraceEnabled()) {\r\n action.visible =\r\n featureTemplate.title === 'Water Main' ? true : false;\r\n } else {\r\n action.visible = false;\r\n }\r\n break;\r\n case 'sewer-cctv-action':\r\n if (this.IsCCTVEnabled()) {\r\n action.visible =\r\n featureTemplate.title === 'Sanitary Main'\r\n ? true\r\n : false;\r\n } else {\r\n action.visible = false;\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n view.popup.on('trigger-action', (evt) => {\r\n // show right panel if collapsed\r\n const _rightpanel = document.querySelector('.right');\r\n if (_rightpanel.classList.contains('hide-rightside-panel'))\r\n _rightpanel.classList.toggle('hide-rightside-panel');\r\n\r\n const { selectedFeature } = view.popup;\r\n var mySensitiveField = this.__getCaseSensitiveAttributeName(selectedFeature.attributes, \"facilityid\");\r\n\r\n if (evt.action.id === 'workorder-details-action') {\r\n// const selectedWork = view.popup.features[0];\r\n const selectedWork = view.popup.selectedFeature;\r\n const _work_details_option =\r\n workorderService.GetUserRole() === 'field'\r\n ? 'WorkOrderDetails'\r\n : 'WorkOrderOfficeDetails';\r\n\r\n this.props.renderComponent(_work_details_option, selectedWork);\r\n view.popup.close();\r\n }\r\n\r\n\r\n if (evt.action.id === 'log-work-action') { // some of this code for add too\r\n const layer_url = selectedFeature.sourceLayer.url;\r\n const __source__layer = layer_url.split('MapServer')[0];\r\n let _gisServicesConfigurationID = 0;\r\n let _gisServicesDepartmentID = 0;\r\n const __appLayers = workorderService.GetApplicationLayers();\r\n\r\n const __service = __appLayers.find(\r\n (s) => s.serviceLink === `${__source__layer}MapServer`\r\n );\r\n _gisServicesConfigurationID = parseInt(\r\n __service.gisServicesConfigurationID\r\n );\r\n _gisServicesDepartmentID = parseInt(\r\n __service.departmentID\r\n );\r\n\r\n let __TitleAndServiceName = view.popup.title.split('|');\r\n const __gisAsset = {\r\n gisAssetID: 0,\r\n assetName: __TitleAndServiceName[0].trim(),\r\n facilityID: selectedFeature.attributes[mySensitiveField],\r\n gisServicesConfigurationID: _gisServicesConfigurationID, // DMM 12/6/2022\r\n sourceLayer: __TitleAndServiceName[1].trim(),\r\n departmentID: _gisServicesDepartmentID,\r\n };\r\n\r\n this.props.renderComponent('LogWork', {\r\n feature: selectedFeature,\r\n gisAsset: __gisAsset,\r\n department: this.__GetDepartmentByID(__gisAsset.departmentID), //__gisAsset.sourceLayer, // DMM 10/12/2022\r\n view: view,\r\n });\r\n }\r\n\r\n\r\n if (evt.action.id === 'create-work-action') { /* some of this code for add too */\r\n const layer_url = selectedFeature.sourceLayer.url;\r\n const __source__layer = layer_url.split('MapServer')[0];\r\n let _gisServicesConfigurationID = 0;\r\n let _gisServicesDepartmentID = 0;\r\n const __appLayers = workorderService.GetApplicationLayers();\r\n\r\n const __service = __appLayers.find(\r\n (s) => s.serviceLink === `${__source__layer}MapServer`\r\n );\r\n _gisServicesConfigurationID = parseInt(\r\n __service.gisServicesConfigurationID\r\n );\r\n _gisServicesDepartmentID = parseInt(\r\n __service.departmentID\r\n );\r\n\r\n let __TitleAndServiceName = view.popup.title.split('|');\r\n const __gisAsset = {\r\n gisAssetID: 0,\r\n assetName: __TitleAndServiceName[0].trim(),\r\n// facilityID: selectedFeature.attributes.FACILITYID,\r\n facilityID: selectedFeature.attributes[mySensitiveField],\r\n gisServicesConfigurationID: _gisServicesConfigurationID, // DMM 12/6/2022\r\n sourceLayer: __TitleAndServiceName[1].trim(),\r\n departmentID: _gisServicesDepartmentID,\r\n };\r\n\r\n this.props.renderComponent('CreateWorkOrder', {\r\n feature: selectedFeature,\r\n gisAsset: __gisAsset,\r\n department: this.__GetDepartmentByID(__gisAsset.departmentID), //__gisAsset.sourceLayer, // DMM 10/12/2022\r\n view: view,\r\n });\r\n //view.popup.close();\r\n }\r\n\r\n // work history\r\n if (evt.action.id === 'work-history-action') {\r\n // check if any history\r\n workorderService\r\n .GetWorkOrderHistory(selectedFeature.attributes[mySensitiveField])\r\n .then((res) => {\r\n if (res.data.length > 0) {\r\n this.props.renderComponent('WorkOrderHistory', {\r\n workhistory: res.data,\r\n });\r\n view.popup.close();\r\n } else {\r\n swal(\r\n 'There is currently no record of work done on this feature'\r\n );\r\n }\r\n });\r\n }\r\n\r\n // isolation trace\r\n if (evt.action.id === 'water-isolation-action') {\r\n this.props.renderComponent('ISOLATIONTRACE', {\r\n feature: selectedFeature,\r\n view: view,\r\n });\r\n /* swal({\r\n text: `Are you sure to perform water isolation trace?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n this.props.renderComponent('ISOLATIONTRACE', {\r\n feature: selectedFeature,\r\n view: view,\r\n });\r\n //view.popup.close();\r\n console.log('Ok performing water isolation trace...');\r\n }\r\n }); */\r\n }\r\n\r\n // CCTV\r\n if (evt.action.id === 'sewer-cctv-action') {\r\n this.props.renderComponent('CCTV', {\r\n facilityID: selectedFeature.attributes[mySensitiveField],\r\n });\r\n view.popup.close();\r\n }\r\n });\r\n\r\n view.whenLayerView(workOrdersFlayer).then((layerView) => {\r\n workorderService.SetWorkOrderLayerView(layerView);\r\n WorkOrderFilter.SetWorkOrderLayerView(layerView);\r\n setTimeout(async () => {\r\n const userType = workorderService.GetUserRole();\r\n const loggedUser = getLoggedInUser();\r\n const { data } = await CrudOperations.GetByID(\r\n 'GisConfiguration/GetGisServicesByUserID',\r\n loggedUser.id\r\n );\r\n /* WorkOrderFilter.FilterCompletedWork(\r\n this.state.User.department,\r\n this.state.selectedAsset,\r\n userType,\r\n loggedUser.id\r\n ); */\r\n WorkOrderFilter.FilterActiveWorkByUser(\r\n this.state.User.department,\r\n this.state.selectedAsset,\r\n userType,\r\n loggedUser.id,\r\n data\r\n );\r\n\r\n const btn__cctv = document.getElementById('btnCCTV');\r\n if (btn__cctv) {\r\n btn__cctv.addEventListener('click', () => {\r\n this.props.renderComponent('CCTV', {\r\n facilityID: '',\r\n });\r\n });\r\n }\r\n const btn__waterIso = document.getElementById('btnIsolationTrace');\r\n if (btn__waterIso) {\r\n btn__waterIso.addEventListener('click', () => {\r\n this.props.renderComponent('ISOLATIONTRACE', {\r\n view: view,\r\n });\r\n });\r\n }\r\n }, 100);\r\n });\r\n\r\n //\r\n // define the filter\r\n // only display features that belong to user department\r\n // by default don't show completed work in while in the field\r\n\r\n // basemap toggler\r\n const basemapToggle = new BasemapToggle({\r\n view: view, // The view that provides access to the map's \"streets-vector\" basemap\r\n// nextBasemap: 'hybrid',\r\n nextBasemap: `${this.props.config.ESRImaps.id_aerial}`,\r\n });\r\n\r\n // legend\r\n const legend = new Legend({\r\n view: view,\r\n container: 'legendDiv',\r\n });\r\n\r\n const sources = [ //ADDED DMM 12/13/2022\r\n {\r\n// locator: new Locator({ url: \"https://gis.mansfieldcity.com/arcgis/rest/services/Miscellaneous/CityAddressLocator/GeocodeServer\" }),\r\n// locator: new Locator({ url: this.props.config.ClientGeocoder }),\r\n url: this.props.config.ClientGeocoder,\r\n singleLineFieldName: 'SingleLine',\r\n name: 'City Geocoding Service',\r\n placeholder: 'Search Address',\r\n maxResults: 20,\r\n maxSuggestions: 20,\r\n suggestionsEnabled: true,\r\n minSuggestCharacters: 1,\r\n },\r\n ]\r\n\r\n const searchWidget = new Search({\r\n view: view,\r\n sources: sources, // ADDED DMM 12/13/2022\r\n includeDefaultSources: false, // ADDED DMM 12/13/2022\r\n });\r\n view.ui.add(searchWidget, {\r\n position: 'top-right',\r\n //index: 2\r\n });\r\n\r\n const infoDiv = document.getElementById('infoDiv');\r\n\r\n const homeBtn = new Home({\r\n view: view,\r\n });\r\n const scaleBar = new ScaleBar({\r\n view: view,\r\n });\r\n const track = new Track({\r\n view: view,\r\n });\r\n\r\n view.ui.add(\r\n [\r\n basemapToggle,\r\n new Expand({\r\n view: view,\r\n content: infoDiv,\r\n expandIconClass: 'esri-icon-layer-list',\r\n expanded: false,\r\n }),\r\n scaleBar,\r\n ],\r\n 'bottom-left'\r\n );\r\n\r\n view.ui.add([homeBtn, track], 'bottom-right');\r\n view.ui.move(['zoom'], 'bottom-right');\r\n\r\n //view.ui.add([track], 'bottom-right');\r\n\r\n view.ui.add(['utilityTogglerDiv'], 'top-left'); //map, this.state.User\r\n\r\n/* setTimeout(() => {\r\n if (this.state.mapview !== null) {\r\n view.ui.add(['street-view-btn'], 'bottom-right');\r\n }\r\n }, 50); */\r\n }\r\n );\r\n };\r\n\r\n togglerMapFilterModal = () => {\r\n this.toggle();\r\n };\r\n\r\n __getCaseSensitiveAttributeName = (fieldAliases, fieldName) => {\r\n for (var key in fieldAliases) { \r\n if (key.toUpperCase() === fieldName.toUpperCase()){\r\n return key;\r\n }\r\n }\r\n return \"\";\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n{/*
    // REMOVED PEGMAN - ACTING IRRACTICALLY\r\n {this.state.mapview && }\r\n
    */}\r\n
    \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n {this.state.WOCAssets.length > 0 && (\r\n \r\n )}\r\n
    \r\n {/* Sign up Modal */}\r\n \r\n Filter Work orders\r\n \r\n

    Map Action Filter Here

    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(WorkOrdersMapAction);\r\n","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport CCTV from '../cctv/CCTV';\r\nimport WorkOrderHistory from '../Reports/WorkOrderHistory';\r\nimport WaterIsolationTrace from '../WaterIsolationTrace/WaterIsolationTrace';\r\nimport WorkOrderOfficeDetails from './BackOffice/WorkOrderOfficeDetails';\r\nimport WorkOrderOfficeArchiveDetails from './BackOffice/WorkOrderOfficeArchiveDetails';\r\nimport CreateWorkOrder from './CreateWorkOrder';\r\nimport LogWork from './LogWork';\r\nimport './map.style.css';\r\nimport WorkFieldUpdate from './WorkFieldUpdate';\r\nimport WorkOrderDetails from './WorkOrderDetails';\r\nimport WorkOrdersList from './WorkOrdersList';\r\nimport WorkOrdersMapAction from './WorkOrdersMapAction';\r\n\r\nclass WorkOrders extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeComponent: 'WorkOrdersList',\r\n activeProps: null,\r\n facilityID: '',\r\n user: null,\r\n view: null,\r\n };\r\n }\r\n componentDidMount() {\r\n //this.__getWorkOrders();\r\n }\r\n\r\n __renderRightStateComponent = (\r\n component,\r\n props = null,\r\n user = null,\r\n view = null\r\n ) => {\r\n this.setState({\r\n activeComponent: component,\r\n activeProps: props,\r\n user,\r\n view,\r\n });\r\n };\r\n\r\n renderComponent() {\r\n switch (this.state.activeComponent) {\r\n case 'CreateWorkOrder':\r\n return (\r\n \r\n );\r\n break;\r\n case 'LogWork':\r\n return (\r\n \r\n );\r\n break; \r\n case 'WorkOrderHistory':\r\n return (\r\n \r\n );\r\n break;\r\n case 'WorkOrderDetails':\r\n return (\r\n \r\n );\r\n break;\r\n case 'WorkOrderOfficeDetails':\r\n return (\r\n \r\n );\r\n break;\r\n case 'WorkOrderOfficeArchiveDetails':\r\n return (\r\n \r\n );\r\n break;\r\n case 'FieldWorkUpdate':\r\n return (\r\n \r\n );\r\n break;\r\n case 'CCTV':\r\n return (\r\n \r\n );\r\n break;\r\n case 'ISOLATIONTRACE':\r\n return (\r\n \r\n );\r\n break;\r\n\r\n default:\r\n return (\r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n {/*
    \r\n
    \r\n Mapping work, please wait...\r\n
    */}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.renderComponent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default withRouter(WorkOrders);\r\n","import React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, Col, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport PageTitle from '../PageTitle';\r\nimport Spinner from '../Spinner';\r\nimport NoWorkOrders from './NoWorkOrders';\r\n\r\nclass WorkOrdersTable extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n workorders: [],\r\n isLoading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // load work orders\r\n const loggedUser = getLoggedInUser();\r\n if (this.props.config) {\r\n workorderService.GetWorkOrders(this.props.config).then((res) => {\r\n var features = res.features;\r\n if (features.length > 0) {\r\n const userRole = workorderService.GetUserRole();\r\n switch (userRole) {\r\n case 'field': //fix 11/1/2022 DMM\r\n/* features = features.filter(\r\n (f) => f.attributes.DepartmentName === loggedUser.department\r\n ); */\r\n features = features.filter(\r\n (f) =>\r\n (f.attributes.AssignedToUID === loggedUser.id)\r\n ); \r\n setTimeout(() => {\r\n document.getElementById('btnLeftPanelToggle').click();\r\n }, 100);\r\n break;\r\n case 'supervisor':\r\n features = features.filter(\r\n (f) => f.attributes.DepartmentName === loggedUser.department\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n workorders: features,\r\n isLoading: false,\r\n });\r\n });\r\n } else {\r\n this.setState({ isLoading: false });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n __getGlobalID = (WOID) => {\r\n const wo = this.state.workorders.find(\r\n (w) => w.attributes.WOID === WOID\r\n );\r\n return (\r\n <>\r\n \r\n {wo.attributes.WOID}\r\n \r\n \r\n );\r\n };\r\n\r\n renderStatus(status) {\r\n switch (status) {\r\n case 'Unassigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Assigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Mine':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n\r\n case 'Completed':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n __renderComponent() {\r\n const columns = [\r\n {\r\n dataField: 'attributes.WOID',\r\n text: 'ID',\r\n formatter: (cell) => {\r\n return this.__getGlobalID(cell);\r\n }, \r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.WorkType',\r\n text: 'Work Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.DepartmentName',\r\n text: 'Department',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.LocationAddress',\r\n text: 'Address',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.OriginatorID',\r\n text: 'Originator',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.AssignedToID',\r\n text: 'Assigned To',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.PlannedDate',\r\n text: 'Due Date',\r\n formatter: (cell, row) => {\r\n return workorderService.GetDueDateFormatted(\r\n cell,\r\n row.attributes.Status,\r\n row.attributes.IsRecurring\r\n );\r\n },\r\n sort: true,\r\n csvFormatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n },\r\n {\r\n dataField: 'attributes.Status',\r\n text: 'Status',\r\n formatter: (cell, row, index) => {\r\n return (\r\n <>\r\n \r\n {this.renderStatus(cell)}\r\n \r\n \r\n );\r\n },\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.DateCompleted',\r\n text: 'Date Completed',\r\n formatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n csvFormatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n sort: true,\r\n },\r\n ];\r\n\r\n const defaultSorted = [\r\n {\r\n dataField: 'attributes.WOID',\r\n order: 'desc', // Updated from 'asc' to 'desc' 9/18/2023 by DMM\r\n },\r\n ];\r\n\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n if (this.state.workorders.length > 0) {\r\n return (\r\n \r\n \r\n

    Search or Export

    \r\n

    \r\n Search or export work orders data in a CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n } else {\r\n return ;\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 {this.__renderComponent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(WorkOrdersTable);\r\n","import { AvField, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n Container,\r\n FormGroup,\r\n Row,\r\n} from 'reactstrap';\r\nimport logo from '../../assets/images/auth-logo.png';\r\nimport errorImg from '../../assets/images/icon-error.png';\r\nimport LoaderWidget from '../../components/Loader';\r\nimport { isUserAuthenticated } from '../../helpers/authUtils';\r\nimport { resetPassword } from '../../redux/actions';\r\n\r\nclass ResetPassword extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleValidSubmit = this.handleValidSubmit.bind(this);\r\n this.state = { code: '', isValidToken: false };\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n const _pw_reset_code = new URLSearchParams(window.location.search).get(\r\n 'code'\r\n );\r\n if (_pw_reset_code) {\r\n this.setState({ code: _pw_reset_code, isValidToken: true });\r\n } else {\r\n // redirect to login\r\n }\r\n\r\n// console.log(this.props); CHANGED 10/28/2022 DMM\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /**\r\n * Handles the submit\r\n */\r\n handleValidSubmit = (event, values) => {\r\n //Update password;\r\n this.props.resetPassword(values.email, values.password, this.state.code);\r\n };\r\n\r\n render() {\r\n const isAuthTokenValid = isUserAuthenticated();\r\n return (\r\n \r\n {(this._isMounted || !isAuthTokenValid) && (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \"\"\r\n \r\n \r\n
    \r\n\r\n \r\n {/* preloader */}\r\n {this.props.loading && }\r\n\r\n {this.state.isValidToken && (\r\n \r\n
    \r\n

    \r\n Reset Password\r\n

    \r\n

    \r\n Enter your email address and provide your new\r\n password\r\n

    \r\n
    \r\n\r\n {this.props.passwordResetStatus && (\r\n \r\n {this.props.passwordResetStatus}\r\n \r\n )}\r\n\r\n {this.props.error && (\r\n \r\n {this.props.error}\r\n \r\n )}\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.isValidToken && (\r\n \r\n
    \r\n \"\"\r\n
    \r\n

    \r\n Invalid Token\r\n

    \r\n

    \r\n Please check your inbox for password reset email\r\n instructions\r\n

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

    \r\n Back to{' '}\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}\r\n\r\nconst mapStateToProps = (state) => {\r\n const { passwordResetStatus, loading, error } = state.Auth;\r\n return { passwordResetStatus, loading, error };\r\n};\r\n\r\nexport default connect(mapStateToProps, { resetPassword })(ResetPassword);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Card, CardBody, Col, Container, Row } from 'reactstrap';\r\nimport logo from '../../assets/images/auth-logo.png';\r\nimport emailImg from '../../assets/images/mail_sent.svg';\r\nimport { isUserAuthenticated } from '../../helpers/authUtils';\r\n\r\nclass AccountCreateSuccess extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n /**\r\n * Redirect to root\r\n */\r\n renderRedirectToRoot = () => {\r\n const isAuthTokenValid = isUserAuthenticated();\r\n if (isAuthTokenValid) {\r\n return ;\r\n }\r\n };\r\n\r\n render() {\r\n const isAuthTokenValid = isUserAuthenticated();\r\n return (\r\n \r\n {this.renderRedirectToRoot()}\r\n\r\n {(this._isMounted || !isAuthTokenValid) && (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \"\"\r\n\r\n

    \r\n Account created successfully\r\n

    \r\n

    \r\n A email has been sent. Please check for an email from\r\n Reynoldsburg WOC and click on the included link to confirm\r\n your account.\r\n

    \r\n\r\n

    \r\n \r\n Back to Login\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default connect()(AccountCreateSuccess);\r\n","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Card, CardBody, Col, Container, Row } from 'reactstrap';\r\nimport logo from '../../assets/images/auth-logo.png';\r\nimport errorImg from '../../assets/images/icon-error.png';\r\nimport { isUserAuthenticated } from '../../helpers/authUtils';\r\n\r\nclass AccountUnauthorized extends Component {\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n /**\r\n * Redirect to root\r\n */\r\n renderRedirectToRoot = () => {\r\n const isAuthTokenValid = isUserAuthenticated();\r\n if (isAuthTokenValid) {\r\n return ;\r\n }\r\n };\r\n\r\n render() {\r\n const isAuthTokenValid = isUserAuthenticated();\r\n return (\r\n \r\n {(this._isMounted || !isAuthTokenValid) && (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \"\"\r\n\r\n

    \r\n Unauthorized Account\r\n

    \r\n

    \r\n Your account is not authorized for the Work Order\r\n Center. Please contact the City\r\n

    \r\n\r\n

    \r\n \r\n Back to Login\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default connect()(AccountUnauthorized);\r\n","// @flow\r\nimport React from 'react';\r\nimport PageTitle from '../../components/PageTitle';\r\n\r\nconst SrcTerms = () => {\r\n return (\r\n \r\n \r\n\r\n
    \r\n

    WOC Terms

    \r\n

    \r\n Last Updated: September 20, 2023.\r\n

    \r\n\r\n

    \r\n This website,{' '}\r\n Work Order Center (WOC), is\r\n operated by the{' '}\r\n \r\n City of Reynoldsburg, Ohio\r\n \r\n . Throughout the site, the terms “we”, “us”\r\n and “our” refer to the City of Reynoldsburg, Ohio. We\r\n offer this website, including all information, tools and services\r\n available from this site to you, the user, conditioned upon your\r\n acceptance of all terms, conditions, policies and notices stated here.\r\n

    \r\n\r\n

    \r\n By visiting our site, you engage in our “Service” and\r\n agree to be bound by the following terms and conditions (“Terms\r\n of Service”, “Terms”) These Terms of Service apply\r\n  to all users of the site.\r\n

    \r\n\r\n

    \r\n Please read these Terms of Service carefully before accessing or using\r\n our website. By accessing or using any part of the site, you agree to\r\n be bound by these Terms of Service. If you do not agree to all\r\n the terms and conditions of this agreement, then you may not access\r\n the website or use any services.\r\n

    \r\n\r\n

    1. Disclaimer

    \r\n\r\n

    \r\n We provide our services using a commercially responsible level of\r\n skill and care and we hope that you will enjoy using them. But there\r\n are certain things that we don't promise about these services.\r\n

    \r\n\r\n

    2. Liability for our Services

    \r\n

    \r\n In order to generate usage statistics to help us improve our web site,\r\n we automatically collect certain information on every visitor to the\r\n web site. However, this information does not disclose \"personal\r\n identifiers\" (such as name, address, telephone number, e-mail address,\r\n etc.). Each time a request is made to view a page within this web\r\n site, our web site creates a log file capturing generic user\r\n information, Examples of this type of information includes the type of\r\n Internet browser or computer operating system you are using, the date\r\n and time you accessed this site, the Internet protocol address of the\r\n individual computer (or proxy server) making the request, and the\r\n Internet address of the site from which you may have linked to this\r\n site. All information collected by way of server log files is used in\r\n aggregate form only, and may be analyzed for trends and statistics.\r\n

    \r\n\r\n {/*
      \r\n\t
    1. Blog articles and tutorials are released under CC-BY-NC license. The code included in these articles and tutorials is licensed under MIT license.
    2. \r\n\t
    3. This license shall automatically terminate if you violate any of these restrictions and may be terminated by Bootstrapious at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.
    4. \r\n
    */}\r\n\r\n

    3. Modifications

    \r\n\r\n

    \r\n The City of Reynoldsburg, Ohio may revise these terms of service for its\r\n website at any time without notice. By using this website you are\r\n agreeing to be bound by the then current version of these terms of\r\n service.\r\n

    \r\n\r\n

    \r\n These terms control the relationship between the City and you. They do\r\n not create any third party beneficiary rights.\r\n

    \r\n\r\n {/*

    Version 1.0 - Effective date: Sep 23, 2019.

    */}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SrcTerms;\r\n","import { AvField, AvRadioGroup, AvRadio, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\n\r\nclass WoProblems extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n problems: [],\r\n departments: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n problemID: 0,\r\n resolutionID: 0,\r\n departmentID: 0,\r\n GISAssets: this.props.GISAssets,\r\n assetsOptions: this.props.assetsOptions,\r\n selectedAsset: 0,\r\n selectedProblem: null,\r\n requireAsset: '',\r\n requireResource: '',\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n booleanFormatter = (cell, row, rowIndex, formatExtraData) => {\r\n return cell ? 'Yes' : 'No'\r\n }\r\n\r\n editsFormatter = (departmentID, problemObj) => {\r\n return (\r\n
    \r\n this.EditProblem(problemObj)}>\r\n Edit\r\n \r\n this.DeleteProblem(problemObj)}\r\n >\r\n Delete\r\n \r\n
    \r\n );\r\n };\r\n\r\n EditProblem = (problemObj) => {\r\n // console.log(problemObj);\r\n const { problemID, name, description, requireAsset, requireResource, problemAsset } = problemObj;\r\n\r\n this.setState({\r\n problemID,\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n selectedAsset: problemAsset.getGISService.gisServicesConfigurationID,\r\n selectedProblem: problemObj,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n handleEdit = (event, values) => {\r\n const { assetID, name, description, requireAsset, requireResource } = values;\r\n let _ProblemObj = {\r\n problemID: this.state.problemID,\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n problemAsset: this.state.selectedProblem.problemAsset,\r\n };\r\n CrudOperations.Update('ProblemResolutions/UpdateProblem', _ProblemObj)\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n this.toggleExistingModal();\r\n swal(`Problem ${name} updated successfully.`);\r\n })\r\n .catch((err) => {\r\n swal('Unable to update problem at this time');\r\n console.log('Error updating Problem :: ', err);\r\n });\r\n };\r\n\r\n DeleteProblem = (problemObj) => {\r\n swal({\r\n text: `You are about to delete Problem [${problemObj.name}]. Please note if this Problem has been linked to a work order, it will not be deleted. Are you sure to delete? `,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n CrudOperations.VerifyItemUsedForDeletion(\r\n problemObj.problemID,\r\n 'problems'\r\n ).then((result) => {\r\n if (result.data) {\r\n swal(\r\n `Problem [${problemObj.name}] has been assigned to work order and cannot be deleted.`\r\n );\r\n } else {\r\n CrudOperations.Delete(\r\n `ProblemResolutions/DeleteProblem`,\r\n problemObj.problemID\r\n )\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n swal(`Problem [${problemObj.name}] deleted successfully.`);\r\n })\r\n .catch((err) => {\r\n swal(\r\n `Unable to delete Problem [${problemObj.name}]. Unexpected result.`\r\n );\r\n console.log('Error :: ', err);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n handleNew = (event, values) => {\r\n //console.log(values);\r\n const { assetID, name, description,requireAsset, requireResource } = values;\r\n let NewProblemObj = {\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n problemAsset: {\r\n gisServicesConfigurationID: assetID,\r\n },\r\n };\r\n CrudOperations.Create('ProblemResolutions/CreateProblem', NewProblemObj)\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n this.toggleNewModal();\r\n swal('Problem created successfully!');\r\n })\r\n .catch((err) => {\r\n swal('Something went wrong!');\r\n console.log('Error :: ', err);\r\n });\r\n };\r\n\r\n __renderProblemsTable = () => {\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'name',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'problemID',\r\n text: '',\r\n formatter: this.editsFormatter,\r\n },\r\n {\r\n dataField: 'name',\r\n text: 'Problem',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'description',\r\n text: 'Description',\r\n },\r\n {\r\n dataField: 'problemAsset.getGISService.name',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'requireAsset',\r\n text: 'Asset Required?',\r\n },\r\n {\r\n dataField: 'requireResource',\r\n text: 'Resource Required?',\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n

    \r\n Work Order Problems\r\n

    \r\n \r\n Create Problem\r\n \r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.__renderProblemsTable()}\r\n\r\n \r\n \r\n Create New Problem\r\n \r\n \r\n {this.props.GISAssets.length < 1 && (\r\n <>\r\n \r\n {' '}\r\n Missing GIS Assets - \r\n Please consider adding GIS Assets first\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {this.props.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \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\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Problem\r\n \r\n \r\n \r\n \r\n \r\n \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.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n The Asset cannot be changed.\r\n \r\n
    \r\n\r\n
    \r\n \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\nexport default WoProblems;\r\n","import { AvField, AvRadioGroup, AvRadio, AvForm } from 'availity-reactstrap-validation';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Alert,\r\n Button,\r\n Card,\r\n CardBody,\r\n Col,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Row,\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\n\r\nclass WoResolutions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n departments: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n resolutionID: 0,\r\n departmentID: 0,\r\n GISAssets: this.props.GISAssets,\r\n assetsOptions: this.props.assetsOptions,\r\n selectedAsset: 0,\r\n selectedResolution: null,\r\n requireAsset: '',\r\n requireResource: '',\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n componentDidMount() {\r\n //console.log(this.props.GISAssets);\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n\r\n }\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.remove('hide-footer');\r\n }\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n editsFormatter = (departmentID, resolutionObj) => {\r\n return (\r\n
    \r\n this.EditResolution(resolutionObj)}>\r\n Edit\r\n \r\n this.DeleteProblem(resolutionObj)}\r\n >\r\n Delete\r\n \r\n
    \r\n );\r\n };\r\n\r\n EditResolution = (resolutionObj) => {\r\n const { resolutionAsset, resolutionID, name, description, requireAsset, requireResource } = resolutionObj;\r\n\r\n this.setState({\r\n resolutionID,\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n selectedAsset: resolutionAsset.getGISService.gisServicesConfigurationID,\r\n selectedResolution: resolutionObj,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n handleEdit = (event, values) => {\r\n const { assetID, name, description, requireAsset, requireResource } = values;\r\n let _ResolutionObj = {\r\n resolutionID: this.state.resolutionID,\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n resolutionAsset: this.state.selectedResolution.resolutionAsset,\r\n };\r\n CrudOperations.Update('ProblemResolutions/UpdateResolution', _ResolutionObj)\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n this.toggleExistingModal();\r\n swal(`Resolution ${name} updated successfully.`);\r\n })\r\n .catch((err) => {\r\n swal('Unable to update problem at this time');\r\n console.log('Error updating Resolution :: ', err);\r\n });\r\n };\r\n\r\n DeleteProblem = (resolutionObj) => {\r\n swal({\r\n text: `You are about to delete Resolution [${resolutionObj.name}]. Please note if this Resolution has been linked to a work order, it will not be deleted. Are you sure to delete? `,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n CrudOperations.VerifyItemUsedForDeletion(\r\n resolutionObj.resolutionID,\r\n 'resolutions'\r\n ).then((result) => {\r\n if (result.data) {\r\n swal(\r\n `Resolution [${resolutionObj.name}] has been assigned to work order and cannot be deleted.`\r\n );\r\n } else {\r\n CrudOperations.Delete(\r\n `ProblemResolutions/DeleteResolution`,\r\n resolutionObj.resolutionID\r\n )\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n swal(`Resolution [${resolutionObj.name}] deleted successfully.`);\r\n })\r\n .catch((err) => {\r\n swal(\r\n `Unable to delete Resolution [${resolutionObj.name}]. Unexpected result.`\r\n );\r\n console.log('Error :: ', err);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n handleNew = (event, values) => {\r\n const { assetID, name, description, requireAsset, requireResource } = values;\r\n let NewResolutionObj = {\r\n name,\r\n description,\r\n requireAsset,\r\n requireResource,\r\n resolutionAsset: {\r\n gisServicesConfigurationID: assetID,\r\n },\r\n };\r\n CrudOperations.Create(\r\n 'ProblemResolutions/CreateResolution',\r\n NewResolutionObj\r\n )\r\n .then((res) => {\r\n this.props.__getProblemResolutions(this.props.departmentID);\r\n this.toggleNewModal();\r\n swal('Resolution created successfully!');\r\n })\r\n .catch((err) => {\r\n swal('Something went wrong!');\r\n console.log('Error :: ', err);\r\n });\r\n };\r\n\r\n __renderResolutionsTable = () => {\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'name',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'resolutionID',\r\n text: '',\r\n formatter: this.editsFormatter,\r\n },\r\n {\r\n dataField: 'name',\r\n text: 'Resolution',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'description',\r\n text: 'Description',\r\n },\r\n {\r\n dataField: 'resolutionAsset.getGISService.name',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'requireAsset',\r\n text: 'Asset Required?',\r\n },\r\n {\r\n dataField: 'requireResource',\r\n text: 'Resource Required?',\r\n },\r\n\r\n ];\r\n\r\n return (\r\n \r\n \r\n

    \r\n Work Order Resolutions\r\n

    \r\n \r\n Create Resolution\r\n \r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {this.__renderResolutionsTable()}\r\n\r\n \r\n \r\n Create New Resolution\r\n \r\n \r\n {this.props.GISAssets.length < 1 && (\r\n <>\r\n \r\n {' '}\r\n Missing GIS Assets - \r\n Please consider adding GIS Assets first\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {this.props.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \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\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {/* Modal Edit */}\r\n \r\n \r\n Edit Resolution\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \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.GISAssets.map((a, idx) => (\r\n \r\n ))}\r\n \r\n \r\n The Asset cannot be changed.\r\n \r\n
    \r\n\r\n
    \r\n \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\nexport default WoResolutions;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport WoProblems from '../../Shared/WoProblems';\r\nimport WoResolutions from '../../Shared/WoResolutions';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'ProblemResolutions';\r\n\r\nclass ProblemResolutions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n resources: [],\r\n departments: [],\r\n Problems: [],\r\n Resolutions: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n rate: 0,\r\n resourceID: 0,\r\n departmentID: 0,\r\n GISAssets: [],\r\n assetsOptions: [],\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n __getGISAssets = async (department) => {\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n var __gis__assets = data;\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === department.departmentID\r\n );\r\n }\r\n // console.log(__gis__assets);\r\n\r\n const { assetsOptions } = this.state;\r\n if (__gis__assets.length > 0) {\r\n __gis__assets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n this.setState({ GISAssets: __gis__assets, assetsOptions });\r\n };\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n CrudOperations.Get('Departments').then((res) => {\r\n const departmentIndex = res.data.findIndex(\r\n (d) => d.name === loggedUser.department\r\n );\r\n if (departmentIndex > -1) {\r\n const department = res.data[departmentIndex];\r\n this.__getGISAssets(department);\r\n this.setState({\r\n departments: res.data,\r\n Department: loggedUser.department,\r\n departmentID: department.departmentID,\r\n });\r\n this.__getProblemResolutions(department.departmentID);\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getProblemResolutions = (departmentID) => {\r\n const user_role = workorderService.GetUserRole();\r\n\r\n switch (user_role) {\r\n case 'manager':\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) => {\r\n console.log(\r\n 'Error fetching problems resolutions for manager :: ',\r\n err\r\n );\r\n });\r\n break;\r\n\r\n default:\r\n CrudOperations.GetProblemResolutionsByDepartment(departmentID)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) =>\r\n console.log('Error, enable to fetch problems resolution :: ', err)\r\n );\r\n break;\r\n }\r\n };\r\n\r\n newModel = () => {\r\n this.setState({\r\n newModal: true,\r\n });\r\n };\r\n\r\n EditResource = (resObj) => {\r\n const { resourceID, departmentID, name, rate } = resObj;\r\n\r\n this.setState({\r\n resourceID,\r\n departmentID,\r\n name,\r\n rate,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n __getDepartmentName = (departmentID) => {\r\n const deptIndex = this.state.departments.findIndex(\r\n (d) => d.departmentID === departmentID\r\n );\r\n if (deptIndex > -1) {\r\n let departmentName = this.state.departments[deptIndex].name;\r\n return departmentName;\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n departmentFormatter = (resourceID, resourceObj) => {\r\n return this.__getDepartmentName(resourceObj.departmentID);\r\n };\r\n\r\n __renderProblemResolutions() {\r\n if (this.state.isLoading) {\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 \r\n \r\n \r\n\r\n {/* {{this.state.assetsOptions.length < 1 && (\r\n
    \r\n \"\"\r\n

    \r\n No Data available\r\n

    \r\n

    \r\n There are no GIS Assets configured at this time.\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
    \r\n
    \r\n \r\n {/* {this.state.Department && (\r\n

    \r\n Showing Problems and Resolutions for{' '}\r\n \r\n {this.state.Department}\r\n {' '}\r\n department\r\n

    \r\n )} */}\r\n\r\n
    {this.__renderProblemResolutions()}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ProblemResolutions;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport WoProblems from '../../Shared/WoProblems';\r\nimport WoResolutions from '../../Shared/WoResolutions';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'Problems';\r\n\r\nclass Problems extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n resources: [],\r\n departments: [],\r\n Problems: [],\r\n Resolutions: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n rate: 0,\r\n resourceID: 0,\r\n departmentID: 0,\r\n GISAssets: [],\r\n assetsOptions: [],\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n __getGISAssets = async (department) => {\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n var __gis__assets = data;\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === department.departmentID\r\n );\r\n }\r\n // console.log(__gis__assets);\r\n\r\n const { assetsOptions } = this.state;\r\n if (__gis__assets.length > 0) {\r\n __gis__assets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n this.setState({ GISAssets: __gis__assets, assetsOptions });\r\n };\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n CrudOperations.Get('Departments').then((res) => {\r\n const departmentIndex = res.data.findIndex(\r\n (d) => d.name === loggedUser.department\r\n );\r\n if (departmentIndex > -1) {\r\n const department = res.data[departmentIndex];\r\n this.__getGISAssets(department);\r\n this.setState({\r\n departments: res.data,\r\n Department: loggedUser.department,\r\n departmentID: department.departmentID,\r\n });\r\n this.__getProblemResolutions(department.departmentID);\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getProblemResolutions = (departmentID) => {\r\n const user_role = workorderService.GetUserRole();\r\n\r\n switch (user_role) {\r\n case 'manager':\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) => {\r\n console.log(\r\n 'Error fetching problems for manager :: ',\r\n err\r\n );\r\n });\r\n break;\r\n\r\n default:\r\n CrudOperations.GetProblemResolutionsByDepartment(departmentID)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) =>\r\n console.log('Error, enable to fetch problems :: ', err)\r\n );\r\n break;\r\n }\r\n };\r\n\r\n newModel = () => {\r\n this.setState({\r\n newModal: true,\r\n });\r\n };\r\n\r\n EditResource = (resObj) => {\r\n const { resourceID, departmentID, name, rate } = resObj;\r\n\r\n this.setState({\r\n resourceID,\r\n departmentID,\r\n name,\r\n rate,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n __getDepartmentName = (departmentID) => {\r\n const deptIndex = this.state.departments.findIndex(\r\n (d) => d.departmentID === departmentID\r\n );\r\n if (deptIndex > -1) {\r\n let departmentName = this.state.departments[deptIndex].name;\r\n return departmentName;\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n departmentFormatter = (resourceID, resourceObj) => {\r\n return this.__getDepartmentName(resourceObj.departmentID);\r\n };\r\n\r\n __renderProblemResolutions() {\r\n if (this.state.isLoading) {\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.state.assetsOptions.length < 1 && (\r\n
    \r\n \"\"\r\n

    \r\n No Data available\r\n

    \r\n

    \r\n There are no GIS Assets configured at this time.\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
    \r\n
    \r\n \r\n {/* {this.state.Department && (\r\n

    \r\n Showing Problems and Resolutions for{' '}\r\n \r\n {this.state.Department}\r\n {' '}\r\n department\r\n

    \r\n )} */}\r\n\r\n
    {this.__renderProblemResolutions()}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Problems;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { CrudOperations } from '../../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport WoProblems from '../../Shared/WoProblems';\r\nimport WoResolutions from '../../Shared/WoResolutions';\r\nimport Spinner from '../../Spinner';\r\n\r\nconst Entity = 'Resolutions';\r\n\r\nclass Resolutions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Department: '',\r\n resources: [],\r\n departments: [],\r\n Problems: [],\r\n Resolutions: [],\r\n isLoading: true,\r\n newModal: false,\r\n existingModal: false,\r\n name: '',\r\n description: '',\r\n rate: 0,\r\n resourceID: 0,\r\n departmentID: 0,\r\n GISAssets: [],\r\n assetsOptions: [],\r\n };\r\n this.toggleNewModal = this.toggleNewModal.bind(this);\r\n this.toggleExistingModal = this.toggleExistingModal.bind(this);\r\n }\r\n\r\n /**\r\n * Toggles the new department modal\r\n */\r\n toggleNewModal = () => {\r\n this.setState((prevState) => ({\r\n newModal: !prevState.newModal,\r\n }));\r\n };\r\n\r\n toggleExistingModal = () => {\r\n this.setState((prevState) => ({\r\n existingModal: !prevState.existingModal,\r\n }));\r\n };\r\n\r\n __getGISAssets = async (department) => {\r\n const user_role = workorderService.GetUserRole();\r\n const { data } = await CrudOperations.Get('GisConfiguration');\r\n var __gis__assets = data;\r\n if (user_role === 'supervisor') {\r\n __gis__assets = __gis__assets.filter(\r\n (s) => s.departmentID === department.departmentID\r\n );\r\n }\r\n // console.log(__gis__assets);\r\n\r\n const { assetsOptions } = this.state;\r\n if (__gis__assets.length > 0) {\r\n __gis__assets.map((s) => {\r\n assetsOptions.push({\r\n value: s.gisServicesConfigurationID,\r\n label: s.name,\r\n });\r\n });\r\n }\r\n\r\n this.setState({ GISAssets: __gis__assets, assetsOptions });\r\n };\r\n\r\n componentDidMount() {\r\n const loggedUser = getLoggedInUser();\r\n CrudOperations.Get('Departments').then((res) => {\r\n const departmentIndex = res.data.findIndex(\r\n (d) => d.name === loggedUser.department\r\n );\r\n if (departmentIndex > -1) {\r\n const department = res.data[departmentIndex];\r\n this.__getGISAssets(department);\r\n this.setState({\r\n departments: res.data,\r\n Department: loggedUser.department,\r\n departmentID: department.departmentID,\r\n });\r\n this.__getProblemResolutions(department.departmentID);\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getProblemResolutions = (departmentID) => {\r\n const user_role = workorderService.GetUserRole();\r\n\r\n switch (user_role) {\r\n case 'manager':\r\n CrudOperations.Get(Entity)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) => {\r\n console.log(\r\n 'Error fetching resolutions for manager :: ',\r\n err\r\n );\r\n });\r\n break;\r\n\r\n default:\r\n CrudOperations.GetProblemResolutionsByDepartment(departmentID)\r\n .then((res) => {\r\n const { problems, resolutions } = res.data;\r\n this.setState({\r\n Problems: problems,\r\n Resolutions: resolutions,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((err) =>\r\n console.log('Error, enable to fetch resolutions :: ', err)\r\n );\r\n break;\r\n }\r\n };\r\n\r\n newModel = () => {\r\n this.setState({\r\n newModal: true,\r\n });\r\n };\r\n\r\n EditResource = (resObj) => {\r\n const { resourceID, departmentID, name, rate } = resObj;\r\n\r\n this.setState({\r\n resourceID,\r\n departmentID,\r\n name,\r\n rate,\r\n existingModal: true,\r\n });\r\n };\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n \r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n __getDepartmentName = (departmentID) => {\r\n const deptIndex = this.state.departments.findIndex(\r\n (d) => d.departmentID === departmentID\r\n );\r\n if (deptIndex > -1) {\r\n let departmentName = this.state.departments[deptIndex].name;\r\n return departmentName;\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n departmentFormatter = (resourceID, resourceObj) => {\r\n return this.__getDepartmentName(resourceObj.departmentID);\r\n };\r\n\r\n __renderProblemResolutions() {\r\n if (this.state.isLoading) {\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\r\n {/* {{this.state.assetsOptions.length < 1 && (\r\n
    \r\n \"\"\r\n

    \r\n No Data available\r\n

    \r\n

    \r\n There are no GIS Assets configured at this time.\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
    \r\n
    \r\n \r\n {/* {this.state.Department && (\r\n

    \r\n Showing Problems and Resolutions for{' '}\r\n \r\n {this.state.Department}\r\n {' '}\r\n department\r\n

    \r\n )} */}\r\n\r\n
    {this.__renderProblemResolutions()}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Resolutions;\r\n","import React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { Card, CardBody, Col, Input, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport NoDataAvailable from '../Shared/NoDataAvailable';\r\nimport Spinner from '../Spinner';\r\n\r\nclass ProblemResolutionCost extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedYear: `${new Date().getFullYear()}`,\r\n isLoading: true,\r\n years: [],\r\n problemResolutions: [],\r\n typesBreakdowns: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.__getCostReport(this.state.selectedYear);\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getCostReport = (year) => {\r\n this.setState({ isLoading: true });\r\n workorderService.GetProblemResolutionReport(year).then((res) => {\r\n let { years, problemResolutions, typesBreakdowns } = res.data;\r\n const loggedUser = getLoggedInUser();\r\n const userRole = workorderService.GetUserRole();\r\n if (userRole === 'supervisor') {\r\n problemResolutions = problemResolutions.filter(\r\n (r) => r.department === loggedUser.department\r\n );\r\n }\r\n this.setState({\r\n selectedYear: year,\r\n years,\r\n problemResolutions,\r\n typesBreakdowns,\r\n isLoading: false,\r\n });\r\n });\r\n };\r\n\r\n generatereport = (evt) => {\r\n this.__getCostReport(evt.target.value);\r\n };\r\n\r\n __getTally = (arr) => {\r\n if (arr.length > 0) {\r\n let total = arr.reduce((acc, item) => {\r\n return acc + item;\r\n });\r\n return GlobalFormatter.FormatUSD(total);\r\n } else {\r\n return '$0.00';\r\n }\r\n };\r\n\r\n __renderReportTable = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.problemResolutions.length) {\r\n// case 0:\r\n// return (\r\n// \r\n// \r\n// \r\n// );\r\n\r\n default:\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'problem',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'year',\r\n text: 'Year',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n /* {\r\n dataField: 'department',\r\n text: 'Department',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n }, */\r\n {\r\n dataField: 'asset',\r\n text: 'Asset',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'workType',\r\n text: 'Work Type',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'problem',\r\n text: 'Problem',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'resolution',\r\n text: 'Resolution',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'totalWorkOrders',\r\n text: 'Work Orders',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'totalResourcesUsed',\r\n text: 'Resources',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'cost',\r\n text: 'Cost',\r\n sort: true,\r\n formatter: (cell) => {\r\n return GlobalFormatter.FormatUSD(cell);\r\n },\r\n footer: (columnData) => this.__getTally(columnData),\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n backgroundColor: '#d6d8da',\r\n };\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.years.map((y, index) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Yearly Problem Resolution Cost Report {this.state.selectedYear}\r\n

    \r\n {/*

    Dashboard

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

    \r\n Filter or export report data in CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n };\r\n render() {\r\n return (\r\n \r\n {this.__renderReportTable()}\r\n {/* {this.state.typesBreakdowns.length > 0 && (\r\n \r\n \r\n

    Resources Types Breakdown

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n )} */}\r\n
    \r\n );\r\n }\r\n}\r\nexport default ProblemResolutionCost;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { Card, CardBody, Col, Row } from 'reactstrap';\r\nimport notFoundImg from '../../../assets/images/file-searching.svg';\r\nimport { GlobalFormatter } from '../../../services/CRUDoperations.service';\r\nimport { UserAPI } from '../../../services/users.services';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport MunicipalityContactInfo from '../../Shared/MunicipalityContactInfo';\r\nimport Spinner from '../../Spinner';\r\nimport './print-page.css';\r\n\r\nconst _questionStyle = {\r\n fontSize: '0.75rem',\r\n margin: '0 !important',\r\n};\r\n\r\nclass PrintWorkOrderInBatch extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: true,\r\n AssignedUser: null,\r\n WorkOrderFeature: null,\r\n GISAssets: [],\r\n GISResources: [],\r\n workOrderQuestionAnswers: [],\r\n// workOrderProblemResolutions: [], // removed when changed from multi to single storage\r\n userType: '',\r\n mapview: null,\r\n User: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ User: this.props.user });\r\n this.initWorkOrderPrint();\r\n }\r\n\r\n initWorkOrderPrint = () => {\r\n const _globalID = this.props.GlobalID;\r\n workorderService\r\n .SelectFeatureByGlobalID(_globalID)\r\n .then((featureResult) => {\r\n workorderService\r\n .GetManagedOrderDetails(_globalID)\r\n .then((results) => {\r\n if (results.data === '') {\r\n this.setState({ isLoading: false });\r\n } else {\r\n const {\r\n gisAssets,\r\n workOrderResources,\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, // removed when changed from multi to single storage\r\n assignedToUID,\r\n } = results.data;\r\n if (featureResult.features.length > 0) {\r\n // get assigned to work\r\n if (assignedToUID) {\r\n UserAPI.GetUser(assignedToUID).then((user) => {\r\n this.setState({\r\n AssignedUser: user.data,\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n WorkOrderFeature: featureResult.features[0],\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, // removed when changed from multi to single storage\r\n isLoading: false,\r\n });\r\n });\r\n } else {\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n WorkOrderFeature: featureResult.features[0],\r\n workOrderQuestionAnswers,\r\n// workOrderProblemResolutions, // removed when changed from multi to single storage\r\n isLoading: false,\r\n });\r\n }\r\n } else {\r\n this.setState({\r\n GISAssets: gisAssets,\r\n GISResources: workOrderResources,\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n })\r\n .catch((error) =>\r\n console.log(`Error fetching order details :: ${error}`)\r\n );\r\n })\r\n .catch((err) => {\r\n console.log(`Error featching feature from GIS Server :: `, err);\r\n });\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n };\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n /* initMapPrintView = () => {\r\n loadModules(['esri/Map', 'esri/views/MapView']).then(([Map, MapView]) => {\r\n const { attributes, geometry } = this.props.feature;\r\n });\r\n }; */\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { attributes } = this.state.WorkOrderFeature;\r\n if (attributes) {\r\n // eslint-disable-next-line default-case\r\n switch (attributes.Status.toLowerCase()) {\r\n case 'yellow':\r\n return 'Assigned';\r\n case 'red':\r\n return 'Unassigned';\r\n case 'green':\r\n return 'Completed';\r\n case 'grey':\r\n return 'Associated to mine';\r\n }\r\n }\r\n };\r\n\r\n __getResourcesTotalCost = () => {\r\n let cost = 0;\r\n this.state.GISResources.map((r) => {\r\n// cost = cost + r.unit * r.resource.rate; // DMM 12/9/2022\r\n cost = cost + r.unit * r.rate;\r\n });\r\n\r\n return GlobalFormatter.FormatUSD(cost);\r\n };\r\n\r\n renderStatus(status) {\r\n return workorderService.renderStatus(status);\r\n }\r\n\r\n __renderEssentialQuestion() {\r\n if (this.state.workOrderQuestionAnswers.length > 0) {\r\n return (\r\n
    \r\n
    \r\n
    Essential Details
    \r\n
      \r\n {this.state.workOrderQuestionAnswers.map((q, index) => (\r\n
    1. \r\n
      \r\n

      \r\n {q.essentialQuestion.question}\r\n

      \r\n \r\n {q.answer}\r\n

      \r\n
      \r\n
    2. \r\n ))}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n __renderPrinting() {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n if (this.state.WorkOrderFeature) {\r\n const { attributes } = this.state.WorkOrderFeature;\r\n const { latitude, longitude } = this.props.feature.geometry;\r\n\r\n/* const mapImgUrl = `https://maps.googleapis.com/maps/api/staticmap?center=${latitude},${longitude}&zoom=16&size=600x250&maptype=roadmap\r\n &markers=color:green%7Clabel:W%7C${latitude},${longitude}&key=${process.env.REACT_APP_GOOGLE_API_KEY}`; */\r\n const mapImgUrl = `${this.props.config.GoogleStaticMap}?center=${latitude},${longitude}&zoom=16&size=600x250&maptype=roadmap\r\n &markers=color:green%7Clabel:W%7C${latitude},${longitude}&key=${this.props.config.ClientGoogleMapsAPIKey}`;\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 Work Order - {attributes.WOID}\r\n

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

    \r\n Created by: {attributes.OriginatorID}\r\n

    \r\n

    \r\n Asset: {attributes.AssetName}\r\n

    \r\n

    \r\n Work Type: {attributes.WorkType}\r\n

    \r\n

    \r\n Description: {attributes.Description}\r\n

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

    \r\n Due Date:    {' '}\r\n \r\n {new Date(attributes.PlannedDate).toISOString().split('T')[0]}\r\n{/* {new Date(\r\n attributes.PlannedDate\r\n ).toLocaleDateString()} DMM 12/12/2022 */}\r\n \r\n

    \r\n

    \r\n WO Status: {' '}\r\n \r\n {this.renderStatus(attributes.Status)}\r\n \r\n

    \r\n

    \r\n WO ID: {' '}\r\n \r\n #{attributes.WOID}\r\n \r\n

    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    Location
    \r\n
    \r\n {attributes.LocationAddress}\r\n
    \r\n Work Assigned to:\r\n
    \r\n {attributes.AssignedToID}\r\n
    \r\n {this.state.AssignedUser\r\n ? this.state.AssignedUser.email\r\n : ''}\r\n
    \r\n P:{' '}\r\n {this.state.AssignedUser\r\n ? this.state.AssignedUser.phoneNumber\r\n : ''}\r\n
    \r\n \r\n \r\n
    \r\n
    GIS Assets
    \r\n {this.state.GISAssets.length === 0 &&

    None

    }\r\n
      \r\n {this.state.GISAssets.map((a, index) => (\r\n
    • \r\n {a.assetName} - {a.facilityID}\r\n
    • \r\n ))}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \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.GISResources.map((item, idx) => {\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
    #ResourceQuantityUnit CostTotal
    {idx + 1}\r\n{/* {item.resource.name} *DMM 12/12/2022 */}\r\n {item.name}\r\n {item.unit}{item.rate}\r\n {GlobalFormatter.FormatUSD(\r\n item.unit * item.rate\r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    Field Notes:
    \r\n \r\n {attributes.FieldNotes === '' ||\r\n attributes.FieldNotes === null\r\n ? 'No field note provided at this time'\r\n : attributes.FieldNotes}\r\n \r\n
    \r\n \r\n \r\n
    \r\n

    {this.__getResourcesTotalCost()}

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

    \r\n Problem: \r\n {attributes.ProblemName === '' ||\r\n attributes.ProblemName === null\r\n ? '(No Problem chosen)'\r\n : attributes.ProblemName}\r\n \r\n

    \r\n

    \r\n Resolution: \r\n {attributes.ResolutionName === '' ||\r\n attributes.ResolutionName === null\r\n ? '(No Resolution chosen)'\r\n : attributes.ResolutionName}\r\n \r\n

    \r\n
    \r\n \r\n\r\n \r\n
    {this.__renderEssentialQuestion()}
    \r\n
    \r\n \r\n\r\n
    \r\n\r\n\r\n {/*
    \r\n
    \r\n {\r\n window.print();\r\n }}\r\n >\r\n Print\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 No Work Order found\r\n

    \r\n

    \r\n There is no work order associate with given id.\r\n

    \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return {this.__renderPrinting()};\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(PrintWorkOrderInBatch);\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider from 'react-bootstrap-table2-toolkit';\r\nimport { connect } from 'react-redux';\r\nimport { Card, CardBody, Col, Row } from 'reactstrap';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport Spinner from '../Spinner';\r\nimport '../workorders/BackOffice/print-page.css';\r\nimport PrintWorkOrderInBatch from '../workorders/BackOffice/PrintWorkOrderInBatch';\r\nimport MunicipalityContactInfo from './MunicipalityContactInfo';\r\n\r\nclass PrintBatchWorkOrders extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: true,\r\n mapview: null,\r\n User: null,\r\n workorders: [],\r\n layerView: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const __batch = workorderService.GetWorkOrdersBatchList();\r\n const layerView = workorderService.GetWorkOrderLayerView();\r\n if (__batch.length > 0) {\r\n const loggedUser = getLoggedInUser();\r\n UserAPI.GetUser(loggedUser.id).then((user) => {\r\n this.setState({\r\n User: user.data,\r\n workorders: __batch,\r\n isLoading: false,\r\n });\r\n setTimeout(() => {\r\n this.initWorkOrderPrint();\r\n const rightMenu = document.querySelector('.left-side-menu');\r\n const btnRightMenuToggler =\r\n document.getElementById('btnLeftPanelToggle');\r\n if (rightMenu.classList.contains('hide-leftside-menu')) {\r\n btnRightMenuToggler.click();\r\n //rightMenu.classList.remove('hide-leftside-menu');\r\n }\r\n }, 200);\r\n });\r\n } else {\r\n this.setState({\r\n workorders: [],\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n\r\n initWorkOrderPrint = () => {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n this.initMapBatchPrintView();\r\n }, 300);\r\n };\r\n\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n initMapBatchPrintView = () => {\r\n loadModules([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/Graphic',\r\n ]).then(([Map, MapView, GraphicsLayer, Graphic]) => {\r\n const selectedWorkGLayer = new GraphicsLayer({\r\n id: 'selectedWorkGLayer',\r\n title: 'Selected Work',\r\n listMode: 'hide',\r\n });\r\n const selectedWorkTextGLayer = new GraphicsLayer({\r\n id: 'selectedWorkTextGLayer',\r\n title: 'Text ID',\r\n listMode: 'hide',\r\n });\r\n const map = new Map({\r\n basemap: `${this.props.config.ESRImaps.id_base}`, //'topo-vector' 'streets-night-vector' changed 12/13/2022 DMM\r\n layers: [selectedWorkGLayer, selectedWorkTextGLayer],\r\n });\r\n const { center, zoom } = this.props.config.mapConfig;\r\n const view = new MapView({\r\n container: 'map-print-view',\r\n map: map,\r\n zoom,\r\n center, // longitude, latitude\r\n });\r\n\r\n view.when(() => {\r\n // add selected work\r\n let marker = {\r\n type: 'picture-marker', // autocasts as new PictureMarkerSymbol()\r\n url: `${this.props.config.ESRImaps.printmarker}`, //'https://static.arcgis.com/images/Symbols/Shapes/BlackStarLargeB.png', //'https://demogis.emht.com/assets/images/markers/BlackStarLargeB.png'\r\n width: '44px',\r\n height: '44px',\r\n };\r\n\r\n this.state.workorders.map((f) => {\r\n selectedWorkGLayer.add(new Graphic(f.geometry, marker, f.attributes));\r\n\r\n var textSym = {\r\n type: 'text',\r\n text: f.attributes.WOID,\r\n font: { size: 13, weight: 'bold' },\r\n yoffset: 10,\r\n color: [61, 4, 149, 1],\r\n };\r\n selectedWorkTextGLayer.add(new Graphic(f.geometry, textSym));\r\n });\r\n setTimeout(() => {\r\n view.goTo(this.state.workorders).then(() => {\r\n view.zoom -= 1; //DMM 12/6/2022 - batch print overall work order map - zoom to them, then out.\r\n });\r\n this.setState({\r\n isLoading: false,\r\n });\r\n }, 50);\r\n });\r\n });\r\n };\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getWorkStatus = () => {\r\n const { attributes } = this.state.WorkOrderFeature;\r\n if (attributes) {\r\n // eslint-disable-next-line default-case\r\n switch (attributes.Status.toLowerCase()) {\r\n case 'yellow':\r\n return 'Assigned';\r\n case 'red':\r\n return 'Unassigned';\r\n case 'green':\r\n return 'Completed';\r\n case 'grey':\r\n return 'Associated to mine';\r\n }\r\n }\r\n };\r\n\r\n renderStatus(status) {\r\n return workorderService.renderStatus(status);\r\n }\r\n\r\n rendertable = () => {\r\n const columns = [\r\n {\r\n dataField: 'attributes.WOID',\r\n text: 'ID',\r\n },\r\n {\r\n dataField: 'attributes.WorkType',\r\n text: 'Work Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.DepartmentName',\r\n text: 'Department',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.LocationAddress',\r\n text: 'Address',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.OriginatorID',\r\n text: 'Originator',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.AssignedToID',\r\n text: 'Assigned To',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.PlannedDate',\r\n text: 'Due Date',\r\n formatter: (cell, row) => {\r\n return workorderService.GetDueDateFormatted(\r\n cell,\r\n row.attributes.Status\r\n );\r\n },\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.Status',\r\n text: 'Status',\r\n formatter: (cell, row, index) => {\r\n return (\r\n <>\r\n \r\n {this.renderStatus(cell)}\r\n \r\n \r\n );\r\n },\r\n },\r\n {\r\n dataField: 'attributes.DateCompleted',\r\n text: 'Date Completed',\r\n formatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n sort: true,\r\n },\r\n ];\r\n\r\n const defaultSorted = [\r\n {\r\n dataField: 'id',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n

    Batch Work Orders List

    \r\n \r\n {(props) => (\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n renderBatchDetails = () => {\r\n return (\r\n \r\n {this.state.workorders.map((w, i) => {\r\n const { attributes, geometry } = w;\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 __renderPrinting = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.workorders.length) {\r\n case 0:\r\n return (\r\n \r\n
    \r\n \"\"\r\n

    \r\n No Work Order found\r\n

    \r\n

    \r\n You haven't selected any work orders batch.\r\n

    \r\n
    \r\n
    \r\n );\r\n default:\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 Work Orders Batch Print\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n window.print();\r\n }}\r\n >\r\n Print\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n\r\n {this.rendertable()}\r\n
    \r\n
     
    \r\n {this.renderBatchDetails()}\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.__renderPrinting()}\r\n \r\n );\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(PrintBatchWorkOrders);\r\n","import React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { Card, CardBody, Col, Input, Progress, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport NoDataAvailable from '../Shared/NoDataAvailable';\r\nimport Spinner from '../Spinner';\r\n\r\nclass ResourceUtilization extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedYear: `${new Date().getFullYear()}`,\r\n isLoading: true,\r\n years: [],\r\n problemResolutions: [],\r\n typesBreakdowns: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.__getCostReport(this.state.selectedYear);\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getCostReport = (year) => {\r\n this.setState({ isLoading: true });\r\n workorderService.GetProblemResolutionReport(year).then((res) => {\r\n let { years, problemResolutions, typesBreakdowns } = res.data;\r\n const loggedUser = getLoggedInUser();\r\n const userRole = workorderService.GetUserRole();\r\n if (userRole === 'supervisor') {\r\n typesBreakdowns = typesBreakdowns.filter(\r\n (r) => r.department === loggedUser.department\r\n );\r\n }\r\n this.setState({\r\n selectedYear: year,\r\n years,\r\n problemResolutions,\r\n typesBreakdowns,\r\n isLoading: false,\r\n });\r\n });\r\n };\r\n\r\n generatereport = (evt) => {\r\n this.__getCostReport(evt.target.value);\r\n };\r\n\r\n __getTally = (arr) => {\r\n if (arr.length > 0) {\r\n let total = arr.reduce((acc, item) => {\r\n return acc + item;\r\n });\r\n return GlobalFormatter.FormatUSD(total);\r\n } else {\r\n return '$0.00';\r\n }\r\n };\r\n\r\n __getUsage = (val) => {\r\n const usageNber = parseInt(val);\r\n return (usageNber / this.state.typesBreakdowns.length) * 100;\r\n };\r\n\r\n getProgressColor = (val) => {\r\n const usageNber = parseInt(val);\r\n const totalUsage = (usageNber / this.state.typesBreakdowns.length) * 100;\r\n if (totalUsage >= 50) {\r\n return 'success';\r\n }\r\n if (totalUsage < 50) {\r\n if (totalUsage >= 20) {\r\n return 'primary';\r\n } else {\r\n return 'danger';\r\n }\r\n }\r\n };\r\n\r\n __renderReportTable = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.typesBreakdowns.length) {\r\n case 0:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'Resource',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'resource',\r\n text: 'Resource',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'asset',\r\n text: 'Asset',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'type',\r\n text: 'Resource Type',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'usage',\r\n text: 'Usage',\r\n sort: true,\r\n formatter: (cell, row, index) => {\r\n return (\r\n
    \r\n {cell} \r\n \r\n
    \r\n );\r\n },\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'cost',\r\n text: 'Cost',\r\n sort: true,\r\n formatter: (cell) => {\r\n return GlobalFormatter.FormatUSD(cell);\r\n },\r\n footer: (columnData) => this.__getTally(columnData),\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n backgroundColor: '#d6d8da',\r\n };\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.years.map((y, index) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Yearly Resource Utilization Report\r\n

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

    \r\n Filter or export report data in CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n };\r\n render() {\r\n return {this.__renderReportTable()};\r\n }\r\n}\r\nexport default ResourceUtilization;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport PageTitle from '../PageTitle';\r\nimport appMenu from './img/app-menu.png';\r\nimport appSettings from './img/app-settings.PNG';\r\nimport searchResult from './img/search-result.PNG';\r\nimport userProfile from './img/user-profile.PNG';\r\nimport utilityToggler from './img/utility-toggler.PNG';\r\nimport workListPanel from './img/work-list-panel.PNG';\r\n\r\nclass Documentation extends Component {\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\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

    Getting Started

    \r\n\r\n

    Application user interface

    \r\n\r\n \r\n \r\n \r\n \r\n \r\n
      \r\n
    1. \r\n
      \r\n

      Dashboard

      \r\n

      \r\n A Dashboard presenting a handful statistical data\r\n for work orders throughout the city.\r\n

      \r\n

      \r\n It is important to notice that this option is\r\n only available to Managers.\r\n

      \r\n
      \r\n
    2. \r\n
    3. \r\n
      \r\n

      Map

      \r\n

      \r\n A map view of the work orders within the WOC.\r\n Work orders will be displayed on the map, as\r\n well as within a listing on the right side of\r\n the webpage\r\n

      \r\n
      \r\n
    4. \r\n
    5. \r\n
      \r\n

      Listing

      \r\n

      \r\n Listing or Work Orders Table is a table view of\r\n the work orders. Work orders in table are\r\n displayed as follow:\r\n

      \r\n
        \r\n
      • \r\n For Managers: the table shows all work\r\n orders for all departments, completed and\r\n active\r\n
      • \r\n
      • \r\n For Supervisors: the table shows\r\n completed and active work orders for their\r\n department\r\n
      • \r\n
      • \r\n For Field User: the table only shows\r\n assigned, unassigned and completed work orders\r\n within his department\r\n
      • \r\n
      \r\n

      \r\n Work orders from the table view can be exported\r\n out to a CSV file for viewing in Microsoft Excel\r\n

      \r\n
      \r\n
    6. \r\n
    7. \r\n
      \r\n

      Report

      \r\n

      \r\n Provides reporting capabilities to the Work\r\n Order Center such as yearly work cost.\r\n

      \r\n
      \r\n
    8. \r\n
    9. \r\n
      \r\n

      Documentation

      \r\n

      \r\n Contains help documents on using the Work Order\r\n Center\r\n

      \r\n
      \r\n
    10. \r\n
    11. \r\n
      \r\n

      System Configuration

      \r\n

      \r\n Contains access to updating the information\r\n contained within the Work Order Center such as\r\n Work Types, Resources, Problems and Resolutions,\r\n Departments & Users. Only users with specific\r\n levels of access will be able to see this\r\n information.\r\n

      \r\n
      \r\n
    12. \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    WOC Search

    \r\n\r\n

    \r\n Using the search bar at the top of the WOC page, users can\r\n search for any key word, a term that may match a work\r\n order description, an address or a work order ID. Please\r\n note that the search will only be performed on items\r\n related to the user’s assigned department, except for\r\n Managers.\r\n

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

    Map Layers

    \r\n\r\n

    \r\n By default, the department that the logged in user is\r\n assigned to will be listed at the top of the layers menu.\r\n Layers that have been assigned to that department can be\r\n easily turned on or off by clicking the button next to\r\n this group.\r\n

    \r\n

    \r\n By expanding View More users can see a listing of other\r\n department layers such as Sewer, Water, Storm, Electric,\r\n etc. and turn those on.\r\n

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

    Settings

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

    \r\n Settings – allows users to customize the layout\r\n theme based on their login. Options include a light\r\n and dark setting. The dark setting will darken the\r\n webpage panels as well as the map background. The\r\n light setting will brighten the map webpage panels and\r\n display a lighter map background. Choose the version\r\n you prefer and click the Save theme button. These\r\n settings will remain attached to your login\r\n credentials.\r\n

    \r\n

    \r\n Users can also update their notification setting\r\n preferences when work is assigned to them.\r\n Notification options include Email, Text Message or\r\n Both. The notification settings can also be updated\r\n under the user profile. Click on \"My Account\" under\r\n User initials then click on \"Edit 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
    \r\n
    \r\n

    Active work list panel

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

    \r\n Active work list panel – This panel only show\r\n active work orders (assigned) and unassigned\r\n

    \r\n

    \r\n Completed work can only be viewed on the map. Work\r\n orders in the list will disapear as the user completes\r\n them.\r\n

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

    On this page

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default Documentation;\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Col, Row } from 'reactstrap';\r\nimport PageTitle from '../PageTitle';\r\nimport assetBasedCreateWork from './img/asset-based-create-work.PNG';\r\nimport btnEdit from './img/btn-edit.PNG';\r\nimport createWork from './img/create-work.PNG';\r\nimport workDetailsBtn from './img/work-details-btn.PNG';\r\n\r\nclass Faq extends Component {\r\n componentDidMount() {\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\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

    Frequently Asked Questions

    \r\n

    \r\n {' '}\r\n Below is a list of frequently asked questions.\r\n{/* Below is a list of frequently asked questions. If you cannot\r\n find what you're looking for, try to look into the{' '}\r\n user guide DMM 12/12/2022 */}\r\n
    \r\n

    \r\n\r\n {/* \r\n */}\r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    Q.
    \r\n

    \r\n How do I create a work order?\r\n

    \r\n

    \r\n If you are a supervisor or a manager, go to the \"Map\" and click\r\n on \"Create New Work Order\" button.\r\n

    \r\n \r\n

    \r\n You can either pick a location or enter an address, and provide\r\n necessary information to the work.\r\n

    \r\n

    \r\n You can also create an asset-based work order by selecting an\r\n asset, then click on \"Create Work Order\".\r\n

    \r\n \r\n
    \r\n
    \r\n
    Q.
    \r\n

    \r\n How do I re-assign a work order to someone else?\r\n

    \r\n

    \r\n If you are a supervisor or a manager, Go to the work order\r\n details and click on \"Change\" button.\r\n

    \r\n
    \r\n \r\n \r\n
    \r\n
    Q.
    \r\n

    \r\n How do I complete a work order?\r\n

    \r\n

    \r\n If you are a field user, or a supervisor, or a manager, you can\r\n complete by going to the work details from the list. Select the\r\n work you wish to complete, the work will be then highlighted\r\n then click on \"Details\" button\r\n

    \r\n \r\n

    \r\n From the details window, click the \"Edit\" button as shown Below\r\n

    \r\n\r\n \r\n
    \r\n\r\n {/*
    \r\n
    Q.
    \r\n

    \r\n How do I delete existing work?\r\n

    \r\n

    \r\n An exisiting work order can be deleted until 24h after work creation. It is not possible to delete a work after 24\r\n

    \r\n
    */}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default Faq;\r\n","// MODULE TO PRINT THE WORK RECURRENCE REPORT. ONLY SHOWS WORK ORDERS THAT ARE RECURRING AND NOT COMPLETED (LINE #37)\r\nimport React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport, Search\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n CardBody, Col, Row\r\n} from 'reactstrap';\r\nimport { getLoggedInUser } from '../../../helpers/authUtils';\r\nimport { workorderService } from '../../../services/workorder.service';\r\nimport PageTitle from '../../PageTitle';\r\nimport Spinner from '../../Spinner';\r\nimport NoWorkOrders from '../../workorders/NoWorkOrders';\r\n\r\nclass WorkOrdersRecurrence extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n workorders: [],\r\n isLoading: true\r\n }\r\n }\r\n componentDidMount() {\r\n // load work orders with recurrece - only reports back those that are not completed.\r\n const loggedUser = getLoggedInUser();\r\n \r\n if(this.props.config){\r\n workorderService.GetWorkOrders(this.props.config)\r\n .then(({features}) => {\r\n if (features.length > 0) {\r\n const userRole = workorderService.GetUserRole();\r\n features = features.filter(\r\n (f) => f.attributes.Status !== 'Completed' && f.attributes.IsRecurring === 'Yes'\r\n );\r\n\r\n switch (userRole) {\r\n case 'supervisor':\r\n features = features.filter(\r\n (f) => f.attributes.DepartmentName === loggedUser.department\r\n );\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n setTimeout(() => {\r\n this.setState({\r\n workorders: features,\r\n isLoading: false,\r\n });\r\n }, 100);\r\n })\r\n } else{\r\n this.setState({isLoading: false});\r\n }\r\n }\r\n componentWillUnmount () {\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getHumanDate = (_d) => {\r\n return new Date(_d).toLocaleDateString();\r\n };\r\n\r\n __getGlobalID = (WOID) => {\r\n const wo = this.state.workorders.find(\r\n (w) => w.attributes.WOID === WOID\r\n );\r\n return (\r\n <>\r\n \r\n {WOID}\r\n \r\n \r\n );\r\n };\r\n \r\n renderStatus(status) {\r\n switch (status) {\r\n case 'Unassigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Assigned':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n case 'Mine':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n \r\n case 'Completed':\r\n return (\r\n \r\n {status}\r\n \r\n );\r\n break;\r\n }\r\n }\r\n\r\n __renderTableComponent = () => {\r\n const columns = [\r\n {\r\n dataField: 'attributes.WOID',\r\n text: 'ID',\r\n formatter: (cell) => {\r\n return this.__getGlobalID(cell);\r\n },\r\n },\r\n {\r\n dataField: 'attributes.WorkType',\r\n text: 'Work Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.AssetName',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.LocationAddress',\r\n text: 'Address',\r\n sort: true,\r\n },\r\n /* {\r\n dataField: 'attributes.OriginatorID',\r\n text: 'Originator',\r\n sort: true,\r\n }, */\r\n {\r\n dataField: 'attributes.AssignedToID',\r\n text: 'Assigned To',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.Recurrence',\r\n text: 'Recurrence'\r\n },\r\n {\r\n dataField: 'attributes.Status',\r\n text: 'Status',\r\n formatter: (cell, row, index) => {\r\n return (\r\n <>\r\n \r\n {this.renderStatus(cell)}\r\n \r\n \r\n );\r\n },\r\n sort: true,\r\n },\r\n {\r\n dataField: 'attributes.NextDueDate',\r\n text: 'Next Due Date',\r\n /* formatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n }, */\r\n sort: true,\r\n },\r\n ];\r\n \r\n const defaultSorted = [\r\n {\r\n dataField: 'id',\r\n order: 'asc',\r\n },\r\n ];\r\n \r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n else{\r\n if (this.state.workorders.length > 0) {\r\n return (\r\n \r\n \r\n

    Search or Export

    \r\n

    \r\n Search or export work orders data in a CSV format\r\n

    \r\n \r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n } else {\r\n return ;\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 {this.__renderTableComponent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n config: state.AppConfig.config,\r\n };\r\n };\r\nexport default connect(mapStateToProps)(WorkOrdersRecurrence);\r\n\r\n","\r\nimport {\r\n AvField, AvForm\r\n} from 'availity-reactstrap-validation';\r\nimport axios from 'axios';\r\nimport _debounce from 'lodash.debounce';\r\nimport React, { Component } from 'react';\r\nimport { Link, withRouter } from 'react-router-dom';\r\nimport {\r\n Button, Card,\r\n CardBody,\r\n CardHeader, Col, Row, UncontrolledAlert\r\n} from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\nimport PageTitle from '../../components/PageTitle';\r\nimport Spinner from '../../components/Spinner';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport imgSymbology from './images/layer_symbology.PNG';\r\n\r\nconst Entity = 'GisConfiguration';\r\n\r\nclass GISAssetsConfiguration extends Component {\r\n constructor(props) {\r\n super(props)\r\n \r\n this.state = {\r\n userRole: '',\r\n isLoadingServices: false,\r\n ServicesOptions: [],\r\n Roles: [],\r\n GISServices: [],\r\n departments: [],\r\n isSaving: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // check for super super admin\r\n const user_role = workorderService.GetUserRole();\r\n if(user_role === 'manager' || workorderService.IsAdmin()) {\r\n this.setState({ userRole: user_role, isLoadingServices: true });\r\n this.fetchGIS_Services();\r\n }\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n fetchGIS_Services = async () => {\r\n const __gisServices = await CrudOperations.Get(Entity);\r\n const __departments = await CrudOperations.Get('Departments');\r\n\r\n //console.log(__gisServices);\r\n\r\n this.setState({\r\n GISServices: __gisServices.data,\r\n departments: __departments.data,\r\n isLoadingServices: false\r\n })\r\n }\r\n\r\n \r\n addService = (evt) => {\r\n //console.log(evt);\r\n let GISServices = this.state.GISServices;\r\n GISServices.push({gisServicesConfigurationID: 0});\r\n\r\n this.setState({GISServices});\r\n }\r\n\r\n RemoveService = (evt, idx, config) => { // DELETE FOR ASSETS HAS BEEN DISABLED FROM THE INTERFACE DMM 12/12/2022 TOO CRITICAL AND ENMESHED\r\n evt.preventDefault();\r\n const GISServices = this.state.GISServices;\r\n if(parseInt(config.gisServicesConfigurationID) > 0) {\r\n swal({\r\n text: `Are you sure to delete this asset?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then(async(action) => {\r\n if(action){\r\n await CrudOperations.Delete('GisConfiguration', config.gisServicesConfigurationID);\r\n\r\n GISServices.splice(idx, 1);\r\n this.setState({ GISServices });\r\n }\r\n })\r\n } else{\r\n GISServices.splice(idx, 1);\r\n this.setState({ GISServices });\r\n }\r\n } \r\n\r\n saveServiceUsers = ( selectedService, selectedUsers ) => {\r\n //console.log(selectedService);\r\n //console.log(selectedUsers);\r\n const serviceConfig = this.state.GISServices.find((s) => s.gisServicesConfigurationID === selectedService.value);\r\n\r\n let __usersGroup = [];\r\n\r\n selectedUsers.map((u) => {\r\n __usersGroup.push(\r\n {\r\n userID: u.value,\r\n gisServicesConfigurationID: serviceConfig.gisServicesConfigurationID\r\n }\r\n )\r\n })\r\n\r\n const __serviceUpdateObj = {\r\n gisServicesConfigurationID: serviceConfig.gisServicesConfigurationID,\r\n name: serviceConfig.name,\r\n serviceLink: serviceConfig.serviceLink,\r\n gisServicesUsersConfigurations: __usersGroup\r\n };\r\n\r\n CrudOperations.Update(Entity, __serviceUpdateObj)\r\n .then((res) => {\r\n this.fetchGIS_Services();\r\n })\r\n .catch((err) => console.log('Error updating GIS Config :: ', err));\r\n }\r\n\r\n _renderDepartmentOptions() {\r\n return (\r\n <>\r\n {this.state.departments.map((d, index) => {\r\n return (\r\n \r\n {d.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n handleGIS_Service = (evt, values) => {\r\n //console.log(values);\r\n if(this.state.GISServices.length > 0) {\r\n this.setState({isSaving: true});\r\n const __bulkAssets = [];\r\n for (let index = 0; index < this.state.GISServices.length; index++) {\r\n const __configID = `config-${index}`;\r\n const __assetName = `name-${index}`;\r\n const __assetURL = `serviceURL-${index}`;\r\n const __assetDepartmentID = `departmentID-${index}`;\r\n \r\n const __configObj = {\r\n gisServicesConfigurationID: values[__configID] === \"\" ? 0 : parseInt(values[__configID]),\r\n name: values[__assetName],\r\n serviceLink: values[__assetURL],\r\n departmentID: parseInt(values[__assetDepartmentID]),\r\n gisServicesUsersConfigurations: []\r\n };\r\n\r\n __bulkAssets.push(__configObj);\r\n }\r\n\r\n //console.log(__bulkAssets);\r\n\r\n CrudOperations.Create('GisConfiguration/CreateGisAssetsInBulkAsync', __bulkAssets)\r\n .then((res) => {\r\n this.fetchGIS_Services();\r\n swal('Assets saved successfully!');\r\n this.setState({isSaving: false});\r\n })\r\n .catch((err) => console.log(\"Error saving assets on server :: \", err));\r\n\r\n }\r\n }\r\n\r\n __setGISURLValidity = async(url) => {\r\n if(url.indexOf(\"MapServer\") > -1) {\r\n const { data } = await axios.get(`${url}?f=json`);\r\n// console.log(data); CHANGED 10/28/2022 DMM\r\n console.log(\"Service Type :: \",data.type);\r\n \r\n return true;\r\n } else{\r\n return false;\r\n }\r\n }\r\n \r\n validateGISRestUrl = _debounce(async(value, ctx, input, cb) => {\r\n if(value === \"\") {}\r\n else{\r\n// console.log(value); CHANGED 10/28/2022 DMM\r\n const __isValidRestUrl = await this.__setGISURLValidity(value); // returns true or false\r\n// console.log(__isValidRestUrl); CHANGED 10/28/2022 DMM\r\n cb(__isValidRestUrl);\r\n }\r\n }, 300);\r\n\r\n __renderComponent() {\r\n if(this.state.userRole === '') {\r\n return (\r\n
    \r\n \"\"\r\n

    Not Authorized

    \r\n

    \r\n You are not authorized to edit work order assets\r\n

    \r\n \r\n\r\n \r\n Return Home\r\n \r\n
    \r\n )\r\n }\r\n else{\r\n switch (this.state.isLoadingServices) {\r\n case true:\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n \r\n default:\r\n\r\n return (\r\n <>\r\n \r\n The asset must be a ArcGIS MapService and sublayers must have a \"FACILITYID\" field. \r\n

    For better rendering of the service, you must allow \"per request order and symbology\" checked

    \r\n \r\n

    \r\n Ex:
    \r\n Name: Signs
    \r\n Service URL: https://domain/arcgis/rest/services/streets/MapServer
    \r\n Department: Streets\r\n

    \r\n
    \r\n\r\n \r\n \r\n
    \r\n Assets - {this.state.GISServices.length}{' '}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {\r\n this.state.GISServices.map((s, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n 0 ? true : false}\r\n >\r\n \r\n {this._renderDepartmentOptions()}\r\n \r\n\r\n \r\n{/* \r\n \r\n REMOVED ABILITY TO DELETE ASSETS ON DMM 12/12/2022 - TOO CRITICAL AND ENMESHED */}\r\n \r\n ))\r\n }\r\n\r\n \r\n \r\n \r\n\r\n {\r\n this.state.GISServices.length > 0 && (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n )\r\n }\r\n }\r\n }\r\n \r\n render() {\r\n return (\r\n
    \r\n \r\n {\r\n this.__renderComponent()\r\n }\r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(GISAssetsConfiguration);\r\n\r\n","import { loadModules } from 'esri-loader';\r\nimport React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n Button, Card,\r\n CardBody, Col, CustomInput, Input, Label, Row\r\n} from 'reactstrap';\r\n\r\n const request_options = {\r\n query: {\r\n f: 'json',\r\n },\r\n responseType: 'json',\r\n };\r\n \r\nconst InspectionDisplay = ( { inspections, gisServices, changeFeatureStatus, onInspectionAssetsUpdate } ) => {\r\n \r\n const { config } = useSelector((state) => state.AppConfig);\r\n const proxyUrl = config?.proxyServer.proxyUrl;\r\n const urlPrefix = config?.proxyServer.urlPrefix;\r\n \r\n const [featureClassOptions, setfeatureClassOptions] = useState([]);\r\n const [selectedLayerID, setSelectedLayerID] = useState();\r\n const [selectedFeatureClass, setSelectedFeatureClass] = useState();\r\n\r\n const getServiceById = () => {\r\n return gisServices.find((s) => parseInt(s.gisServicesConfigurationID) === parseInt(selectedLayerID));\r\n }\r\n\r\n const __addInspectionLayer = async(inspection) => {\r\n let inspectionLayers = inspection.inspectionLayers;\r\n const _service = getServiceById();\r\n const inspectionLayer = {\r\n //inspectionLayerID: 0,\r\n inspectionID: inspection.inspectionID,\r\n layerName: _service.name,\r\n featureClass: selectedFeatureClass\r\n };\r\n \r\n inspectionLayers.push(inspectionLayer);\r\n onInspectionAssetsUpdate(inspectionLayers, inspection);\r\n }\r\n\r\n const __fetch_feature_classes = (serviceUrl) => {\r\n return loadModules([\r\n 'esri/request',\r\n 'esri/core/urlUtils'\r\n ]).then(async([esriRequest, urlUtils]) => {\r\n\r\n \r\n\r\n urlUtils.addProxyRule({\r\n proxyUrl,\r\n urlPrefix\r\n });\r\n\r\n const _subLayers = [];\r\n const __layerInfo = await esriRequest(\r\n serviceUrl,\r\n request_options\r\n );\r\n //console.log(__layerInfo);\r\n const { layers } = __layerInfo.data;\r\n layers.map((l) => {\r\n if(l.parentLayerId > -1) {\r\n _subLayers.push(l.name);\r\n }\r\n })\r\n\r\n return _subLayers;\r\n })\r\n }\r\n\r\n const __populateFeatureClass = async(serviceID) => {\r\n setfeatureClassOptions([]);\r\n const service = gisServices.find((s) => parseInt(s.gisServicesConfigurationID) === parseInt(serviceID));\r\n //console.log(service);\r\n if(service) {\r\n const result = await __fetch_feature_classes(service.serviceLink);\r\n setfeatureClassOptions(result);\r\n setSelectedLayerID(serviceID);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n\r\n \r\n {inspections.map((inspection, idx) => {\r\n const {inspectionName, description, workType, isEnabled, thumbnail, inspectionLayers} = inspection;\r\n return (\r\n \r\n \r\n \r\n \"\"\r\n \r\n\r\n \r\n

    \r\n {inspectionName}\r\n

    \r\n

    \r\n {description}\r\n

    \r\n \r\n
    \r\n
      \r\n {\r\n inspectionLayers.map((a, idx) => (\r\n
    • {a.featureClass}
    • \r\n ))\r\n }\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n Is Enabled \r\n changeFeatureStatus(e.target.checked, inspection)}\r\n />\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n __populateFeatureClass(evt.target.value)}\r\n >\r\n \r\n {\r\n gisServices.map((s, idx) => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n setSelectedFeatureClass(e.target.value)}\r\n >\r\n \r\n {\r\n featureClassOptions.map((fc, idx) => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default InspectionDisplay\r\n","import React, { Component } from 'react';\r\nimport PageTitle from '../../components/PageTitle';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport InspectionDisplay from './Display/InspectionDisplay';\r\n\r\nconst Entity = 'GISInspections';\r\n\r\nclass InspectionsManagement extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n isLoading: true,\r\n inspections: [],\r\n GISAssets: [],\r\n userRole: ''\r\n }\r\n }\r\n\r\n fetchGIS_Services = async () => {\r\n const __gisServices = await CrudOperations.Get('GisConfiguration');\r\n this.setState({\r\n GISAssets: __gisServices.data\r\n });\r\n };\r\n\r\n fetchInspections_Data = async () => {\r\n const { data } = await CrudOperations.Get(Entity);\r\n this.setState({\r\n inspections: data,\r\n isLoading: false\r\n })\r\n }\r\n componentDidMount() {\r\n const user_role = workorderService.GetUserRole();\r\n if(user_role === 'manager' || workorderService.IsAdmin()) {\r\n this.fetchGIS_Services();\r\n this.fetchInspections_Data();\r\n } else{\r\n //redirect to home page\r\n\r\n }\r\n\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n }\r\n }\r\n\r\n changeFeatureStatus = async (isEnabled, inspection) => {\r\n inspection.isEnabled = isEnabled;\r\n const {data} = await CrudOperations.Update(Entity, inspection);\r\n this.fetchInspections_Data();\r\n }\r\n\r\n onInspectionAssetsUpdate = async(inspectionLayers, inspection) => {\r\n inspection.inspectionLayers = inspectionLayers;\r\n const {data} = await CrudOperations.Update(Entity, inspection);\r\n this.fetchInspections_Data();\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\nexport default InspectionsManagement;\r\n","import {\r\n AvField, AvForm\r\n} from 'availity-reactstrap-validation';\r\nimport React, { useState } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport, Search\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Button, Card,\r\n CardBody, Col, Row\r\n} from 'reactstrap';\r\nimport PageTitle from '../../components/PageTitle';\r\nimport { workorderService } from '../../services/workorder.service';\r\n\r\nconst AssetWorkHistory = () => {\r\n const [workHistory, setWorkHistory] = useState([]);\r\n const [isFetchingHistoryData, setIsFetchingHistoryData] = useState(false);\r\n const [isSearchComplete, setIsSearchComplete] = useState(false);\r\n\r\n const __findWorkHistory = async(event, values) => {\r\n // call the back end api for work history by facilityID\r\n setIsSearchComplete(false);\r\n setIsFetchingHistoryData(true);\r\n const { facilityID } = values;\r\n const { data } = await workorderService.GetWorkOrderHistory(facilityID);\r\n setWorkHistory(data);\r\n setIsFetchingHistoryData(false);\r\n setIsSearchComplete(true);\r\n }\r\n\r\n const __getGlobalID = (woid, row) => {\r\n return (\r\n <>\r\n \r\n {woid}\r\n \r\n \r\n );\r\n };\r\n\r\n const columns = [\r\n {\r\n dataField: 'workOrder.workOrderID',\r\n text: 'WOID',\r\n formatter: (cell, row) => {\r\n return __getGlobalID(cell, row);\r\n },\r\n },\r\n {\r\n dataField: 'assetName',\r\n text: 'Asset',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'facilityID',\r\n text: 'Facility ID',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.workOrderType',\r\n text: 'Work Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.workCreatedBy',\r\n text: 'Created By',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.dateCreated',\r\n text: 'Created Date',\r\n formatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.workAssignedTo',\r\n text: 'Assigned To',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.status',\r\n text: 'Status',\r\n formatter: (cell, row, index) => {\r\n return (\r\n <>\r\n \r\n {workorderService.renderStatus(cell)}\r\n \r\n \r\n );\r\n },\r\n sort: true,\r\n }\r\n ];\r\n\r\n const defaultSorted = [\r\n {\r\n dataField: 'id',\r\n order: 'asc',\r\n },\r\n ];\r\n \r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n {/** Input field for requesting FacilityID */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n workHistory.length > 0 && (\r\n <>\r\n \r\n \r\n

    Search or Export

    \r\n

    \r\n Search or export work order history data in a CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n {isSearchComplete && workHistory.length < 1 && (\r\n
    \r\n

    \r\n There are no work history data available for that asset at this time.\r\n

    \r\n
    \r\n )}\r\n\r\n \r\n )\r\n}\r\n\r\nexport default AssetWorkHistory;\r\n","import React, { Component, Fragment } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { Card, CardBody, Col, Input, Row } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport NoDataAvailable from '../Shared/NoDataAvailable';\r\nimport Spinner from '../Spinner';\r\n\r\nclass ResourceInventoryCritical extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n resourceInventoryCritical: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.__getCriticalReport();\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n __getCriticalReport = () => {\r\n this.setState({ isLoading: true });\r\n workorderService.GetResourceInventoryCriticalReport().then((res) => {\r\n let { resourceInventoryCritical } = res.data;\r\n const loggedUser = getLoggedInUser();\r\n const userRole = workorderService.GetUserRole();\r\n if (userRole === 'supervisor') {\r\n resourceInventoryCritical = resourceInventoryCritical.filter(\r\n (r) => r.department === loggedUser.department\r\n );\r\n }\r\n this.setState({\r\n resourceInventoryCritical,\r\n isLoading: false,\r\n });\r\n });\r\n };\r\n\r\n generatereport = (evt) => {\r\n this.__getCriticalReport(evt.target.value);\r\n };\r\n\r\n __getTally = (arr) => {\r\n if (arr.length > 0) {\r\n let total = arr.reduce((acc, item) => {\r\n return acc + item;\r\n });\r\n return GlobalFormatter.FormatUSD(total);\r\n } else {\r\n return '$0.00';\r\n }\r\n };\r\n\r\n __renderReportTable = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.resourceInventoryCritical.length) {\r\n case 0:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'department, asset, name',\r\n order: 'asc',\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'asset',\r\n text: 'Asset',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'name',\r\n text: 'Name',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'type',\r\n text: 'Type',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'rate',\r\n text: 'Rate',\r\n sort: true,\r\n formatter: (cell) => {\r\n return GlobalFormatter.FormatUSD(cell);\r\n },\r\n },\r\n {\r\n dataField: 'currentLevel',\r\n text: 'Current Level',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'criticalLevel',\r\n text: 'Critical Level',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Critical Resource Inventory Report\r\n

    \r\n {/*

    Dashboard

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

    \r\n Filter or export report data in CSV format\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n };\r\n render() {\r\n return (\r\n \r\n {this.__renderReportTable()}\r\n {/* {this.state.typesBreakdowns.length > 0 && (\r\n \r\n \r\n

    Resources Types Breakdown

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n )} */}\r\n
    \r\n );\r\n }\r\n}\r\nexport default ResourceInventoryCritical;\r\n","import {\r\n AvField, AvForm\r\n} from 'availity-reactstrap-validation';\r\nimport React, { useState } from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport, Search\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport {\r\n Button, Card,\r\n CardBody, Col, Row\r\n} from 'reactstrap';\r\nimport PageTitle from '../../components/PageTitle';\r\nimport { workorderService } from '../../services/workorder.service';\r\n\r\nconst SignWorkHistory = () => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n const [workHistory, setWorkHistory] = useState([]);\r\n const [workFeature, setWorkFeature] = useState([]);\r\n const [isFetchingHistoryData, setIsFetchingHistoryData] = useState(false);\r\n const [isSearchComplete, setIsSearchComplete] = useState(false);\r\n\r\n const __findWorkHistory = async(event, values) => {\r\n // call the back end api for work history by facilityID\r\n setIsSearchComplete(false);\r\n setIsFetchingHistoryData(true);\r\n const { facilityID } = values;\r\n const { features } = await workorderService.GetFeature('FACILITYID', facilityID);\r\n const { data } = await workorderService.GetWorkOrderHistory(facilityID);\r\n setWorkFeature(features);\r\n setWorkHistory(data);\r\n setIsFetchingHistoryData(false);\r\n setIsSearchComplete(true);\r\n }\r\n\r\n const __getGlobalID = (woid, row, status) => {\r\n if (status === 'Archived') {\r\n return (\r\n <> {woid} \r\n );\r\n } else {\r\n return (\r\n <>\r\n \r\n {woid}\r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const columns = [\r\n {\r\n dataField: 'workOrder.workOrderID',\r\n text: 'WOID',\r\n formatter: (cell, row) => {\r\n return __getGlobalID(cell, row, row.workOrder.status);\r\n },\r\n },\r\n {\r\n dataField: 'workOrder.workOrderType',\r\n text: 'Work Type',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.problemName',\r\n text: 'Problem',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.description',\r\n text: 'Work Description',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.fieldNotes',\r\n text: 'Field Notes',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.resolutionName',\r\n text: 'Resolution',\r\n sort: true,\r\n },\r\n {\r\n dataField: 'workOrder.plannedDate',\r\n text: 'Completed / Due',\r\n formatter: (cell, row) => {\r\n return workorderService.GetDueDateFormatted(\r\n cell,\r\n row.workOrder.status,\r\n row.workOrder.isRecurring\r\n );\r\n },\r\n sort: true,\r\n csvFormatter: (cell) => {\r\n return workorderService.__getHumanDateAndTime(cell);\r\n },\r\n },\r\n {\r\n dataField: 'workOrder.status',\r\n text: 'Status',\r\n formatter: (cell, row, index) => {\r\n return (\r\n <>\r\n \r\n {workorderService.renderStatus(cell)}\r\n \r\n \r\n );\r\n },\r\n sort: true,\r\n }\r\n ];\r\n\r\n const defaultSorted = [\r\n {\r\n dataField: 'id',\r\n order: 'asc',\r\n },\r\n ];\r\n \r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n {/** Input field for requesting FacilityID */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n workFeature.length > 0 && workHistory.length > 0 && (\r\n <>\r\n \r\n \r\n{/*

    Search or Export {workFeature[0].attributes.LOCATION}

    \r\n

    \r\n Search or export work order history data in a CSV format\r\n

    */}\r\n{/* this.__ZoomToWorkOrder(wo, e)}\r\n > */}\r\n{/* \r\n this.__toggleBatchPrintItem(evt.target.checked, wo)\r\n }\r\n /> */}\r\n{/*
    \r\n
    Due Date:
    \r\n \r\n {wo.attributes.IsRecurring === 'Yes' && (\r\n <>\r\n {' '}\r\n \r\n )}\r\n\r\n {workorderService.GetDueDateFormatted(\r\n wo.attributes.PlannedDate,\r\n wo.attributes.Status\r\n )}\r\n \r\n
    */}\r\n \r\n \r\n \r\n
    TYPE: {workFeature[0].attributes.TYPE}
    \r\n
    STREET: {workFeature[0].attributes.STREET} - DIRECTION:{' '}\r\n {workFeature[0].attributes.DIRECTION}{' '}
    \r\n
    LOCATION: {workFeature[0].attributes.LOCATION}
    \r\n \r\n \r\n
    CODE: {workFeature[0].attributes.CODE}
    \r\n
    SIZE: {workFeature[0].attributes.SIZE}
    \r\n
    REPLACEMENT: {workFeature[0].attributes.YRREPLACE}
    \r\n \r\n \r\n \"Sign\r\n \r\n
    \r\n{/* */}\r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Export CSV\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n {isSearchComplete && workFeature.length < 1 && (\r\n
    \r\n

    \r\n No Sign found with that ID.\r\n

    \r\n
    \r\n )}\r\n\r\n {isSearchComplete && workHistory.length < 1 && (\r\n
    \r\n

    \r\n There is no work history data available for that asset at this time.\r\n

    \r\n
    \r\n )}\r\n\r\n\r\n \r\n )\r\n}\r\n\r\nexport default SignWorkHistory;\r\n","import React, { Component, Fragment} from 'react';\r\nimport BootstrapTable from 'react-bootstrap-table-next';\r\nimport filterFactory, { textFilter } from 'react-bootstrap-table2-filter';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { Card, CardBody, Col, Input, Row, UncontrolledTooltip } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport NoDataAvailable from '../../components/Shared/NoDataAvailable';\r\nimport Spinner from '../../components/Spinner';\r\nimport swal from 'sweetalert';\r\n//import 'react-bootstrap-table2-filter/dist/react-bootstrap-table2-filter.min.css';\r\n\r\nclass SignAnnualReplacements extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedYear: `${new Date().getFullYear()}`,\r\n isLoading: true,\r\n years: [2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2024],\r\n annualWork:[],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n// this.__getAnnualReport(this.state.selectedYear);\r\n this.__getAnnualReport(2021);\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n\r\n/* DMM 12/30/22 - CAN'T GET YEARS FROM FEATURES - HARD-CODED ABOVE.\r\n workorderService.GetAnnualYears().then((res) => {\r\n const annualYears = res;\r\n this.setState({\r\n years: annualYears,\r\n }); \r\n });\r\n*/ \r\n\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getAttachmentUrl2 = async (objectID) => {\r\n try{\r\n const resp = await workorderService.GetFeatureAttachments(objectID)\r\n if (resp.data.attachmentInfos.length > 0) {\r\n const _attachments = resp.data.attachmentInfos;\r\n const src = _attachments[0].id;\r\n const url = 'https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/FeatureServer/1/'+ objectID + '/attachments/'+src;\r\n return url;\r\n }\r\n else return 'https://via.placeholder.com/150'\r\n }\r\n catch(err){\r\n console.log('Error fetching attachments :: ', err)\r\n return 'https://via.placeholder.com/150'\r\n }\r\n }\r\n\r\n __getAttachmentUrl = (objectID) => {\r\n workorderService.GetFeatureAttachments(objectID).then((resp) => {\r\n if (resp.data.attachmentInfos.length > 0) {\r\n const _attachments = resp.data.attachmentInfos;\r\n const src = _attachments[0].id;\r\n const url = 'https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/FeatureServer/1/'+ objectID + '/attachments/'+src;\r\n return url;\r\n };\r\n });\r\n };\r\n\r\n __getAnnualReport = (year) => {\r\n this.setState({ isLoading: true });\r\n\r\n workorderService.GetAnnualWork('YRREPLACE', year).then((res) => {\r\n const annualWork = res.features\r\n\r\n this.setState({\r\n selectedYear: year,\r\n annualWork,\r\n isLoading: false,\r\n }); \r\n });\r\n };\r\n \r\n __createWorkOrder = () => {\r\n swal(\"Hello\");\r\n swal({\r\n text: `You are about to create a new work order. It will include all of the Signs presently listed in the table below. Please note, associated Signs will be projected out for replacement when you do this. Are you sure you want to create?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n swal(\"You asked for it!\")\r\n } else {\r\n swal(\"Good idea!\")\r\n };\r\n });\r\n };\r\n\r\n generatereport = (evt) => {\r\n this.__getAnnualReport(evt.target.value);\r\n };\r\n\r\n\r\n\r\n __renderReportTable = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.annualWork.length) {\r\n case 0:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'attributes.STREET',\r\n order: 'asc'\r\n },\r\n {\r\n dataField: 'attributes.TYPE',\r\n order: 'asc'\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'attributes.FACILITYID',\r\n text: 'Facility ID',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.STREET',\r\n text: 'Street',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.TYPE',\r\n text: 'Type',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.CODE',\r\n text: 'Code',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.SIZE',\r\n text: 'Size',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.BACKCOLORS',\r\n text: 'Background',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.DIRECTION',\r\n text: 'Dir',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.LOCATION',\r\n text: 'Location',\r\n filter: textFilter(),\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'image',\r\n text: 'Image',\r\n formatter: (cell, row) => (\r\n \"Sign\r\n ),\r\n },\r\n ];\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.years.map((y, index) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Annual Sign Replacement Program\r\n

    \r\n {/*

    Dashboard

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

    \r\n Filter listing / Export report data in CSV format / Create new work orders\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n Selected Year: {this.state.selectedYear} / Signs: {this.state.annualWork.length}\r\n

    \r\n \r\n{/* \r\n \r\n \r\n \r\n \r\n Create Work Order\r\n \r\n */}\r\n \r\n \r\n Export CSV\r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n };\r\n render() {\r\n return (\r\n \r\n {this.__renderReportTable()}\r\n {/* {this.state.typesBreakdowns.length > 0 && (\r\n \r\n \r\n

    Resources Types Breakdown

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n )} */}\r\n
    \r\n );\r\n }\r\n}\r\nexport default SignAnnualReplacements;\r\n","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { Route } from 'react-router-dom';\r\nimport DepartmentManagement from '../components/workorders/BackOffice/DepartmentManagement';\r\nimport PrintWorkOrder from '../components/workorders/BackOffice/PrintWorkOrder';\r\nimport ResourcesManagement from '../components/workorders/BackOffice/ResourcesManagement';\r\nimport ServicesManagement from '../components/workorders/BackOffice/ServicesManagement';\r\nimport SrcSearch from '../components/workorders/BackOffice/SrcSearch';\r\nimport UserProfile from '../components/User/UserProfile';\r\nimport UsersManagements from '../components/workorders/BackOffice/UsersManagements';\r\nimport WorkOrders from '../components/workorders/WorkOrders';\r\nimport WorkOrdersTable from '../components/workorders/WorkOrdersTable';\r\n\r\nimport {\r\n isUserAuthenticated,\r\n getLoggedInUser,\r\n isUserInSupervisorRole,\r\n} from '../helpers/authUtils';\r\nimport ResetPassword from '../pages/auth/ResetPassword';\r\nimport AccountCreateSuccess from '../pages/auth/AccountCreateSuccess';\r\nimport AccountUnauthorized from '../pages/auth/AccountUnauthorized';\r\nimport SrcTerms from '../components/TermsPolicy/Terms';\r\nimport ProblemResolutions from '../components/workorders/BackOffice/ProblemResolutions';\r\nimport Problems from '../components/workorders/BackOffice/Problems';\r\nimport Resolutions from '../components/workorders/BackOffice/Resolutions';\r\nimport ProblemResolutionCost from '../components/Reports/ProblemResolutionCost';\r\nimport PrintBatchWorkOrders from '../components/Shared/PrintBatchWorkOrders';\r\nimport ResourceUtilization from '../components/Reports/ResourceUtilization';\r\nimport Documentation from '../components/Documentation/Documentation';\r\nimport Faq from '../components/Documentation/Faq';\r\nimport WorkOrdersRecurrence from '../components/Reports/Recurrence/WorkOrdersRecurrence';\r\nimport GISAssetsConfiguration from '../pages/GISAssetsConfiguration/GISAssetsConfiguration';\r\nimport InspectionsManagement from '../pages/InspectionsManagement/InspectionsManagement';\r\nimport AssetWorkHistory from '../pages/AssetWorkHistory/AssetWorkHistory';\r\nimport ResourceInventoryCritical from '../components/Reports/ResourceInventoryCritical';\r\nimport SignWorkHistory from '../pages/SignWorkHistory/SignWorkHistory';\r\nimport SignAnnualReplacements from '../pages/SignAnnualReplacements/SignAnnualReplacements';\r\nimport SignPurchaseReport from '../pages/SignPurchaseReport/SignPurchaseReport';\r\n\r\n\r\n// lazy load all the views\r\n\r\n// auth\r\nconst Login = React.lazy(() => import('../pages/auth/Login'));\r\nconst Logout = React.lazy(() => import('../pages/auth/Logout'));\r\nconst Register = React.lazy(() => import('../pages/auth/Register'));\r\nconst ForgetPassword = React.lazy(() => import('../pages/auth/ForgetPassword'));\r\nconst Confirm = React.lazy(() => import('../pages/auth/Confirm'));\r\n\r\nconst WorkOrderDashboard = React.lazy(() => import('../components/Dashboard'));\r\n\r\n// pages\r\nconst ErrorPageNotFound = React.lazy(() =>\r\n import('../pages/error/PageNotFound')\r\n);\r\nconst ServerError = React.lazy(() => import('../pages/error/ServerError'));\r\n\r\n// handle auth and authorization\r\n\r\nconst PrivateRoute = ({ component: Component, roles, ...rest }) => (\r\n {\r\n if (!isUserAuthenticated()) {\r\n // not logged in so redirect to login page with the return url\r\n return (\r\n \r\n );\r\n }\r\n\r\n const loggedInUser = getLoggedInUser();\r\n // check if route is restricted by role\r\n if (roles && roles.indexOf(loggedInUser.role) === -1) {\r\n // role not authorised so redirect to home page\r\n return ;\r\n }\r\n\r\n // authorised so return component\r\n return ;\r\n }}\r\n />\r\n);\r\n\r\n// root routes\r\nconst rootRoute = {\r\n path: '/',\r\n exact: true,\r\n component: () => ,\r\n route: PrivateRoute,\r\n};\r\nconst printRoute = {\r\n path: '/print/:globalid',\r\n exact: true,\r\n component: PrintWorkOrder,\r\n route: PrivateRoute,\r\n};\r\nconst batchPrintRoute = {\r\n path: '/batch/print',\r\n exact: true,\r\n component: PrintBatchWorkOrders,\r\n route: PrivateRoute,\r\n};\r\nconst searchRoute = {\r\n path: '/search/:q',\r\n exact: true,\r\n component: SrcSearch,\r\n route: PrivateRoute,\r\n};\r\nconst userProfileRoute = {\r\n path: '/user/profile',\r\n exact: true,\r\n component: UserProfile,\r\n route: PrivateRoute,\r\n};\r\nconst srcTermsRoute = {\r\n path: '/src/terms',\r\n exact: true,\r\n component: SrcTerms,\r\n route: PrivateRoute,\r\n};\r\nconst GISServicesConfigRoute = {\r\n path: '/gis/services/configuration',\r\n exact: true,\r\n component: GISAssetsConfiguration,\r\n route: PrivateRoute,\r\n};\r\nconst GISInspectionsConfigRoute = {\r\n path: '/gis/inspections/configuration',\r\n exact: true,\r\n component: InspectionsManagement,\r\n route: PrivateRoute,\r\n};\r\n\r\n// dashboards\r\nconst dashboardRoutes = {\r\n path: '/dashboard',\r\n name: 'Dashboard',\r\n route: PrivateRoute,\r\n roles: ['Admin', 'supervisor'],\r\n icon: 'dripicons-home',\r\n component: WorkOrderDashboard,\r\n header: 'Analytics',\r\n};\r\n\r\nconst workOrdersAppRoutes = {\r\n path: '/apps/workorders',\r\n name: 'Map',\r\n route: PrivateRoute,\r\n roles: ['Admin', 'supervisor'],\r\n icon: 'dripicons-crosshair',\r\n component: WorkOrders,\r\n header: 'WORK ORDERS',\r\n};\r\nconst workOrdersTableRoute = {\r\n path: '/apps/reports/tbl',\r\n name: 'Listing',\r\n route: PrivateRoute,\r\n roles: ['Admin', 'supervisor'],\r\n icon: 'dripicons-list',\r\n component: WorkOrdersTable,\r\n};\r\n\r\nconst docsAppRoutes = {\r\n path: '/apps/docs',\r\n name: 'Documentation',\r\n route: PrivateRoute,\r\n roles: ['Users'],\r\n icon: 'dripicons-question',\r\n children: [\r\n/* {\r\n path: '/apps/docs/help',\r\n name: 'User Guide',\r\n component: Documentation,\r\n route: PrivateRoute,\r\n }, */ // DMM 12/12/2022\r\n {\r\n path: '/apps/docs/faq',\r\n name: 'FAQ',\r\n component: Faq,\r\n route: PrivateRoute,\r\n },\r\n ],\r\n};\r\nconst appRoutes = [workOrdersAppRoutes];\r\n\r\nconst pageRoutes = {\r\n path: '/system',\r\n name: 'Configuration',\r\n icon: 'dripicons-document-edit',\r\n header: 'System',\r\n children: [\r\n {\r\n path: '/system/services',\r\n name: 'Work Types',\r\n icon: 'uil-server-network-alt',\r\n component: ServicesManagement,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/resources',\r\n name: 'Resources',\r\n icon: 'uil-cell',\r\n component: ResourcesManagement,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/problemresolutions',\r\n name: 'Problem Resolutions',\r\n icon: 'uil-lightbulb',\r\n component: ProblemResolutions,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/users',\r\n name: 'Users',\r\n icon: 'uil-users-alt',\r\n component: UsersManagements,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/assets/configuration',\r\n name: 'Assets',\r\n icon: 'uil-game-structure',\r\n component: GISAssetsConfiguration,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/departments',\r\n name: 'Departments',\r\n icon: 'uil-folder-network',\r\n component: DepartmentManagement,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/system/inspections/configuration',\r\n name: 'Inspections',\r\n icon: 'uil-sliders-v-alt',\r\n component: InspectionsManagement,\r\n route: PrivateRoute,\r\n },\r\n ],\r\n};\r\nconst reportRoutes = {\r\n path: '/report',\r\n name: 'Reports',\r\n icon: 'dripicons-to-do',\r\n children: [\r\n {\r\n path: '/report/problem-resolution/cost',\r\n name: 'Problem/Resolution Cost',\r\n icon: 'uil-money-withdrawal',\r\n component: ProblemResolutionCost,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/report/resource-utilization',\r\n name: 'Resource Utilization',\r\n icon: 'uil-dollar-sign-alt',\r\n component: ResourceUtilization,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/report/recurrence',\r\n name: 'Work Recurrence',\r\n icon: 'dripicons-alarm',\r\n component: WorkOrdersRecurrence,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/report/asset-work-history',\r\n name: 'Asset Work History',\r\n icon: 'dripicons-clock',\r\n component: AssetWorkHistory,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/report/inventory-critical',\r\n name: 'Critical Resource Inventory',\r\n icon: 'dripicons-flag',\r\n component: ResourceInventoryCritical,\r\n route: PrivateRoute,\r\n },\r\n ],\r\n};\r\n\r\nconst assetmanagementSignsRoutes = {\r\n path: '/assetmanagement/signs',\r\n name: 'Signs',\r\n icon: 'uil-notes',\r\n header: 'Asset Management',\r\n children: [\r\n {\r\n path: '/assetmanagement/signhistory',\r\n name: 'Detailed History',\r\n icon: 'dripicons-message',\r\n component: SignWorkHistory,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/assetmanagement/signreplacements',\r\n name: 'Annual Replacements',\r\n icon: 'dripicons-network-2',\r\n component: SignAnnualReplacements,\r\n route: PrivateRoute,\r\n }, \r\n/* {\r\n path: '/assetmanagement/signpurchasereport',\r\n name: 'Annual Purchases',\r\n icon: 'dripicons-network-2',\r\n component: SignPurchaseReport,\r\n route: PrivateRoute,\r\n }, */\r\n/* {\r\n path: '/assetmanagement/signreporting',\r\n name: 'Advanced Reporting',\r\n icon: 'dripicons-network-3',\r\n component: WorkOrdersRecurrence,\r\n route: PrivateRoute,\r\n }, */\r\n ],\r\n};\r\n/*\r\nconst assetmanagementWastewaterRoutes = {\r\n path: '/assetmanagement/wastewater',\r\n name: 'Wastewater',\r\n icon: 'uil-notes',\r\n children: [\r\n {\r\n path: '/assetmanagement/wastewater1',\r\n name: 'Wastewater Management 1',\r\n icon: 'dripicons-message',\r\n component: ProblemResolutionCost,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/assetmanagement/wastewater2',\r\n name: 'Wastewater Management 2',\r\n icon: 'dripicons-network-2',\r\n component: ResourceUtilization,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/assetmanagement/wastewater3',\r\n name: 'Wastewater Management 3',\r\n icon: 'dripicons-network-3',\r\n component: WorkOrdersRecurrence,\r\n route: PrivateRoute,\r\n },\r\n ],\r\n};\r\n\r\nconst assetmanagementStormwaterRoutes = {\r\n path: '/assetmanagement/stormwater',\r\n name: 'Stormwater',\r\n icon: 'uil-notes',\r\n children: [\r\n {\r\n path: '/assetmanagement/stormwater1',\r\n name: 'Stormwater Management 1',\r\n icon: 'dripicons-message',\r\n component: ProblemResolutionCost,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/assetmanagement/stormwater2',\r\n name: 'Stormwater Management 2',\r\n icon: 'dripicons-network-2',\r\n component: ResourceUtilization,\r\n route: PrivateRoute,\r\n },\r\n {\r\n path: '/assetmanagement/stormwater3',\r\n name: 'Stormwater Management 3',\r\n icon: 'dripicons-network-3',\r\n component: WorkOrdersRecurrence,\r\n route: PrivateRoute,\r\n },\r\n ],\r\n};\r\n*/\r\n\r\n// auth\r\nconst authRoutes = {\r\n path: '/account',\r\n name: 'Auth',\r\n children: [\r\n {\r\n path: '/account/login',\r\n name: 'Login',\r\n component: Login,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/logout',\r\n name: 'Logout',\r\n component: Logout,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/register',\r\n name: 'Register',\r\n component: Register,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/confirm',\r\n name: 'Confirm',\r\n component: Confirm,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/create/success',\r\n name: 'AccountCreateSuccess',\r\n component: AccountCreateSuccess,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/unauthorised',\r\n name: 'AccountUnauthorized',\r\n component: AccountUnauthorized,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/forget-password',\r\n name: 'Forget Password',\r\n component: ForgetPassword,\r\n route: Route,\r\n },\r\n {\r\n path: '/account/reset-pw',\r\n name: 'Reset Password',\r\n component: ResetPassword,\r\n route: Route,\r\n },\r\n ],\r\n};\r\n\r\n// flatten the list of all nested routes\r\nconst flattenRoutes = (routes) => {\r\n let flatRoutes = [];\r\n\r\n routes = routes || [];\r\n routes.forEach((item) => {\r\n flatRoutes.push(item);\r\n\r\n if (typeof item.children !== 'undefined') {\r\n flatRoutes = [...flatRoutes, ...flattenRoutes(item.children)];\r\n }\r\n });\r\n return flatRoutes;\r\n};\r\n\r\nconst SupRoutes = [\r\n dashboardRoutes,\r\n rootRoute,\r\n printRoute,\r\n batchPrintRoute,\r\n searchRoute,\r\n userProfileRoute,\r\n srcTermsRoute,\r\n ...appRoutes,\r\n authRoutes,\r\n workOrdersTableRoute,\r\n reportRoutes,\r\n docsAppRoutes,\r\n assetmanagementSignsRoutes,\r\n// assetmanagementWastewaterRoutes,\r\n// assetmanagementStormwaterRoutes,\r\n pageRoutes,\r\n];\r\n\r\nconst authSupProtectedRoutes = [\r\n dashboardRoutes,\r\n ...appRoutes,\r\n workOrdersTableRoute,\r\n reportRoutes,\r\n docsAppRoutes,\r\n assetmanagementSignsRoutes,\r\n// assetmanagementWastewaterRoutes,\r\n// assetmanagementStormwaterRoutes,\r\n pageRoutes,\r\n printRoute,\r\n batchPrintRoute,\r\n searchRoute,\r\n userProfileRoute,\r\n srcTermsRoute,\r\n];\r\n\r\nconst allRoutes = SupRoutes;\r\nconst authProtectedRoutes = authSupProtectedRoutes;\r\n\r\nconst allFlattenRoutes = flattenRoutes(SupRoutes);\r\n\r\nexport { allRoutes, authProtectedRoutes, allFlattenRoutes };\r\n","import React, { Component, Fragment} from 'react';\r\nimport {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table-next';\r\nimport paginationFactory from 'react-bootstrap-table2-paginator';\r\nimport ToolkitProvider, {\r\n CSVExport,\r\n Search,\r\n} from 'react-bootstrap-table2-toolkit';\r\nimport { Card, CardBody, Col, Input, Row, UncontrolledTooltip } from 'reactstrap';\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\nimport { GlobalFormatter } from '../../services/CRUDoperations.service';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport NoDataAvailable from '../../components/Shared/NoDataAvailable';\r\nimport Spinner from '../../components/Spinner';\r\nimport swal from 'sweetalert';\r\n\r\nclass SignPurchaseReport extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedYear: `${new Date().getFullYear()}`,\r\n isLoading: true,\r\n years: [2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2024],\r\n annualWork:[],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n// this.__getAnnualReport(this.state.selectedYear);\r\n this.__getAnnualReport(2021);\r\n setTimeout(() => {\r\n const footer = document.getElementById('footer');\r\n if (footer) {\r\n footer.classList.add('hide-footer');\r\n }\r\n }, 300);\r\n\r\n/* DMM 12/30/22 - CAN'T GET YEARS FROM FEATURES - HARD-CODED ABOVE.\r\n workorderService.GetAnnualYears().then((res) => {\r\n const annualYears = res;\r\n this.setState({\r\n years: annualYears,\r\n }); \r\n });\r\n*/ \r\n\r\n }\r\n componentWillUnmount() {\r\n const footer = document.getElementById('footer');\r\n footer.classList.remove('hide-footer');\r\n this.setState = (state, callback) => {\r\n return;\r\n };\r\n }\r\n\r\n __getAttachmentUrl2 = async (objectID) => {\r\n try{\r\n const resp = await workorderService.GetFeatureAttachments(objectID)\r\n if (resp.data.attachmentInfos.length > 0) {\r\n const _attachments = resp.data.attachmentInfos;\r\n const src = _attachments[0].id;\r\n const url = 'https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/FeatureServer/1/'+ objectID + '/attachments/'+src;\r\n return url;\r\n }\r\n else return 'https://via.placeholder.com/150'\r\n }\r\n catch(err){\r\n console.log('Error fetching attachments :: ', err)\r\n return 'https://via.placeholder.com/150'\r\n }\r\n }\r\n\r\n __getAttachmentUrl = (objectID) => {\r\n workorderService.GetFeatureAttachments(objectID).then((resp) => {\r\n if (resp.data.attachmentInfos.length > 0) {\r\n const _attachments = resp.data.attachmentInfos;\r\n const src = _attachments[0].id;\r\n const url = 'https://gis.reynoldsburg.gov/arcgis/rest/services/WorkOrderCenter/WOC_Signs/FeatureServer/1/'+ objectID + '/attachments/'+src;\r\n return url;\r\n };\r\n });\r\n };\r\n\r\n __getAnnualReport = (year) => {\r\n this.setState({ isLoading: true });\r\n\r\n workorderService.GetAnnualWork('YRREPLACE', year).then((res) => {\r\n const annualWork = res.features\r\n\r\n this.setState({\r\n selectedYear: year,\r\n annualWork,\r\n isLoading: false,\r\n }); \r\n });\r\n };\r\n \r\n __createWorkOrder = () => {\r\n swal(\"Hello\");\r\n swal({\r\n text: `You are about to create a new work order. It will include all of the Signs presently listed in the table below. Please note, associated Signs will be projected out for replacement when you do this. Are you sure you want to create?`,\r\n closeOnClickOutside: false,\r\n buttons: { cancel: 'NO', confirm: 'YES' },\r\n dangerMode: true,\r\n }).then((action) => {\r\n if (action) {\r\n swal(\"You asked for it!\")\r\n } else {\r\n swal(\"Good idea!\")\r\n };\r\n });\r\n };\r\n\r\n generatereport = (evt) => {\r\n this.__getAnnualReport(evt.target.value);\r\n };\r\n\r\n\r\n\r\n __renderReportTable = () => {\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n switch (this.state.annualWork.length) {\r\n case 0:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n const TableWithSearch = () => {\r\n const { SearchBar } = Search;\r\n const { ExportCSVButton } = CSVExport;\r\n const defaultSorted = [\r\n {\r\n dataField: 'attributes.TYPE',\r\n order: 'asc'\r\n },\r\n ];\r\n\r\n const columns = [\r\n {\r\n dataField: 'attributes.TYPE',\r\n text: 'Type',\r\n groupBy: true,\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.CODE',\r\n text: 'Code',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.SIZE',\r\n text: 'Size',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'attributes.BACKCOLORS',\r\n text: 'Background',\r\n sort: true,\r\n footer: '',\r\n footerStyle: (column, colIndex) => {\r\n return {\r\n border: 'none',\r\n };\r\n },\r\n },\r\n {\r\n dataField: 'image',\r\n text: 'Image',\r\n formatter: (cell, row) => (\r\n \"Sign\r\n ),\r\n },\r\n ];\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.state.years.map((y, index) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n Annual Sign Purchases\r\n

    \r\n {/*

    Dashboard

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

    \r\n Filter listing / Export report data in CSV format / Create new work orders\r\n

    \r\n\r\n \r\n {(props) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n Selected Year: {this.state.selectedYear} / Signs: {this.state.annualWork.length}\r\n

    \r\n \r\n{/* \r\n \r\n \r\n \r\n \r\n Create Work Order\r\n \r\n */}\r\n \r\n \r\n Export CSV\r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return ;\r\n }\r\n }\r\n };\r\n render() {\r\n return (\r\n \r\n {this.__renderReportTable()}\r\n {/* {this.state.typesBreakdowns.length > 0 && (\r\n \r\n \r\n

    Resources Types Breakdown

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n )} */}\r\n
    \r\n );\r\n }\r\n}\r\nexport default SignPurchaseReport;\r\n","// @flow\r\nimport React, { Component, Suspense } from 'react';\r\nimport { connect } from 'react-redux';\r\n\r\n// loading\r\nconst loading = () =>
    ;\r\n\r\ntype DefaultLayoutProps = {\r\n children?: any,\r\n};\r\n\r\nclass DefaultLayout extends Component {\r\n /**\r\n * On component update - update layout\r\n */\r\n componentDidMount = () => {\r\n if (document.body) document.body.classList.add('authentication-bg');\r\n };\r\n\r\n /**\r\n * On component unmount - reset layout\r\n */\r\n componentWillUnmount = () => {\r\n if (document.body) document.body.classList.remove('authentication-bg');\r\n };\r\n\r\n render() {\r\n const children = this.props.children || null;\r\n return {children};\r\n }\r\n}\r\n\r\nexport default connect()(DefaultLayout);\r\n","// @flow\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { CustomInput, FormGroup, Label } from 'reactstrap';\r\nimport swal from 'sweetalert';\r\nimport * as layoutConstants from '../constants/layout';\r\nimport { getLoggedInUser } from '../helpers/authUtils';\r\nimport {\r\n changeLayout,\r\n changeLayoutWidth,\r\n changeSidebarTheme,\r\n changeSidebarType,\r\n hideRightSidebar,\r\n} from '../redux/actions';\r\nimport { UserAPI } from '../services/users.services';\r\nimport {\r\n AppThemeService,\r\n workorderService,\r\n} from '../services/workorder.service';\r\n\r\ntype ThemeCustomizerProps = {\r\n layoutType: string,\r\n layoutWidth: string,\r\n leftSideBarTheme: string,\r\n leftSideBarType: string,\r\n hideRightSidebar: PropTypes.func,\r\n changeLayout: PropTypes.func,\r\n changeLayoutWidth: PropTypes.func,\r\n changeSidebarType: PropTypes.func,\r\n changeSidebarTheme: PropTypes.func,\r\n};\r\n\r\ntype ThemeCustomizerState = {\r\n isHorizontalLayout?: boolean,\r\n isDetachedLayout?: boolean,\r\n isBoxed?: boolean,\r\n isSidebarScrollable?: boolean,\r\n isCondensed?: boolean,\r\n isLight?: boolean,\r\n isDark?: boolean,\r\n};\r\n\r\nclass ThemeCustomizer extends Component<\r\n ThemeCustomizerProps,\r\n ThemeCustomizerState\r\n> {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeLayout = this.changeLayout.bind(this);\r\n this.changeWidthMode = this.changeWidthMode.bind(this);\r\n this.changeTheme = this.changeTheme.bind(this);\r\n this.changeLeftSiderbarType = this.changeLeftSiderbarType.bind(this);\r\n\r\n this.state = {\r\n isHorizontalLayout: false,\r\n isDetachedLayout: false,\r\n isBoxed: false,\r\n isSidebarScrollable: false,\r\n isCondensed: false,\r\n isLight: false,\r\n isDark: false,\r\n notificationType: 'Email',\r\n userSettings: null,\r\n };\r\n }\r\n\r\n /**\r\n * Handle the notification settings\r\n *\r\n */\r\n handleNotificationTypeChange = (evt) => {\r\n this.setState({\r\n notificationType: evt.target.value,\r\n userRole: '',\r\n });\r\n };\r\n\r\n /**\r\n * component did mount hook\r\n */\r\n componentDidMount = () => {\r\n this._loadStateFromProps();\r\n const _user = getLoggedInUser();\r\n UserAPI.GetUser(_user.id).then((user) => {\r\n setTimeout(() => {\r\n var __settingsObj = workorderService.GetUserAppSettings();\r\n const user_role = workorderService.GetUserRole();\r\n this.setState({\r\n userRole: user_role,\r\n notificationType:\r\n __settingsObj === null ? 'Email' : __settingsObj.notificationType,\r\n userSettings: __settingsObj,\r\n });\r\n this.getUserTheme();\r\n }, 50);\r\n });\r\n };\r\n\r\n /**\r\n * component did update hook\r\n */\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevProps !== this.props) {\r\n this._loadStateFromProps();\r\n }\r\n };\r\n\r\n __saveNotificationPreference = () => {\r\n const _user = getLoggedInUser();\r\n const { notificationType } = this.state;\r\n\r\n const _preference = {\r\n UserID: _user.id,\r\n Preference: notificationType,\r\n };\r\n\r\n // save\r\n UserAPI.UpdateNotificationPreference(_preference)\r\n .then((res) => {\r\n var __settingsObj = workorderService.GetUserAppSettings();\r\n\r\n if (__settingsObj === null) {\r\n const __userSettingObj = {\r\n userID: _user.id,\r\n themeName: this.state.isDark\r\n ? 'LEFT_SIDEBAR_THEME_DARK'\r\n : 'LEFT_SIDEBAR_THEME_LIGHT',\r\n notificationType: notificationType,\r\n mostTopLayerID: 0,\r\n };\r\n workorderService.SaveUserSettings(__userSettingObj);\r\n } else {\r\n __settingsObj.notificationType = notificationType;\r\n workorderService.SaveUserSettings(__settingsObj);\r\n }\r\n\r\n //swal('Notification preference saved successfully');\r\n this.props.hideRightSidebar();\r\n })\r\n .catch((err) => {\r\n swal('Notification preference not saved.');\r\n console.log('Error updating notification :: ', err);\r\n });\r\n };\r\n\r\n /**\r\n * Handles the close\r\n */\r\n handleClose = (e) => {\r\n e.preventDefault();\r\n this.props.hideRightSidebar();\r\n };\r\n\r\n /**\r\n * change state based on props changes\r\n */\r\n _loadStateFromProps() {\r\n this.setState({\r\n isHorizontalLayout:\r\n this.props.layoutType === layoutConstants.LAYOUT_HORIZONTAL,\r\n isDetachedLayout:\r\n this.props.layoutType === layoutConstants.LAYOUT_DETACHED,\r\n isBoxed: this.props.layoutWidth === layoutConstants.LAYOUT_WIDTH_BOXED,\r\n isSidebarScrollable:\r\n this.props.leftSideBarType ===\r\n layoutConstants.LEFT_SIDEBAR_TYPE_SCROLLABLE,\r\n isCondensed:\r\n this.props.leftSideBarType ===\r\n layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED,\r\n isLight:\r\n this.props.leftSideBarTheme ===\r\n layoutConstants.LEFT_SIDEBAR_THEME_LIGHT,\r\n isDark:\r\n this.props.leftSideBarTheme === layoutConstants.LEFT_SIDEBAR_THEME_DARK,\r\n });\r\n }\r\n\r\n /**\r\n * On layout change\r\n */\r\n changeLayout = (e) => {\r\n var layout = e.currentTarget.value;\r\n switch (layout) {\r\n case 'horizontal':\r\n this.setState({\r\n isHorizontalLayout: !this.state.isHorizontalLayout,\r\n isCondensed: false,\r\n isDetachedLayout: false,\r\n });\r\n this.props.changeLayout(layoutConstants.LAYOUT_HORIZONTAL);\r\n break;\r\n case 'detached':\r\n this.setState({\r\n isDetachedLayout: !this.state.isDetachedLayout,\r\n isHorizontalLayout: false,\r\n isBoxed: false,\r\n });\r\n this.props.changeLayout(layoutConstants.LAYOUT_DETACHED);\r\n break;\r\n default:\r\n this.setState({\r\n isHorizontalLayout: false,\r\n isCondensed: false,\r\n isDetachedLayout: false,\r\n });\r\n this.props.changeLayout(layoutConstants.LAYOUT_VERTICAL);\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Change the width mode\r\n */\r\n changeWidthMode = (e) => {\r\n var mode = e.currentTarget.value;\r\n switch (mode) {\r\n case 'boxed':\r\n this.setState({ isBoxed: true });\r\n this.props.changeLayoutWidth(layoutConstants.LAYOUT_WIDTH_BOXED);\r\n break;\r\n default:\r\n this.setState({ isBoxed: false });\r\n this.props.changeLayoutWidth(layoutConstants.LAYOUT_WIDTH_FLUID);\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Changes the theme\r\n */\r\n applyTheme = (e) => {\r\n if (e.target.checked) {\r\n this.setState({ isDark: true });\r\n this.props.changeSidebarTheme(layoutConstants.LEFT_SIDEBAR_THEME_DARK);\r\n AppThemeService.SetMapDarkMode();\r\n } else {\r\n this.setState({ isDark: false });\r\n this.props.changeSidebarTheme(layoutConstants.LEFT_SIDEBAR_THEME_LIGHT);\r\n AppThemeService.SetMapLightMode();\r\n }\r\n };\r\n changeTheme = (e) => {\r\n //console.log(e);\r\n var theme = e.currentTarget.value;\r\n switch (theme) {\r\n case 'light':\r\n this.setState({ isLight: true });\r\n this.props.changeSidebarTheme(layoutConstants.LEFT_SIDEBAR_THEME_LIGHT);\r\n AppThemeService.SetMapLightMode();\r\n break;\r\n case 'dark':\r\n this.setState({ isLight: false, isDark: true });\r\n this.props.changeSidebarTheme(layoutConstants.LEFT_SIDEBAR_THEME_DARK);\r\n AppThemeService.SetMapDarkMode();\r\n break;\r\n default:\r\n this.setState({ isLight: false, isDark: false });\r\n this.props.changeSidebarTheme(\r\n layoutConstants.LEFT_SIDEBAR_THEME_DEFAULT\r\n );\r\n break;\r\n }\r\n };\r\n\r\n setUserTheme = () => {\r\n const _user = getLoggedInUser();\r\n var __settingsObj = workorderService.GetUserAppSettings();\r\n //console.log(__settingsObj);\r\n if (__settingsObj === '' || __settingsObj === null) {\r\n const __userSettingObj = {\r\n userID: _user.id,\r\n themeName: this.state.isDark\r\n ? 'LEFT_SIDEBAR_THEME_DARK'\r\n : 'LEFT_SIDEBAR_THEME_LIGHT',\r\n notificationType: this.state.notificationType,\r\n mostTopLayerID: 0,\r\n };\r\n workorderService.SaveUserSettings(__userSettingObj);\r\n } else {\r\n __settingsObj.themeName = this.state.isDark\r\n ? 'LEFT_SIDEBAR_THEME_DARK'\r\n : 'LEFT_SIDEBAR_THEME_LIGHT';\r\n workorderService.SaveUserSettings(__settingsObj);\r\n }\r\n this.props.hideRightSidebar();\r\n };\r\n getUserTheme = () => {\r\n const { userSettings } = this.state;\r\n if (userSettings) {\r\n switch (userSettings.themeName) {\r\n case 'LEFT_SIDEBAR_THEME_LIGHT':\r\n this.setState({ isDark: false });\r\n this.props.changeSidebarTheme(\r\n layoutConstants.LEFT_SIDEBAR_THEME_LIGHT\r\n );\r\n AppThemeService.SetMapLightMode();\r\n break;\r\n\r\n default:\r\n this.setState({ isDark: true });\r\n this.props.changeSidebarTheme(\r\n layoutConstants.LEFT_SIDEBAR_THEME_DARK\r\n );\r\n AppThemeService.SetMapDarkMode();\r\n break;\r\n }\r\n }\r\n };\r\n __saveTheme = () => {\r\n this.setUserTheme();\r\n };\r\n\r\n /**\r\n * Change the type\r\n */\r\n changeLeftSiderbarType = (e) => {\r\n var type = e.currentTarget.value;\r\n switch (type) {\r\n case 'condensed':\r\n this.setState({\r\n isCondensed: true,\r\n isSidebarScrollable: false,\r\n isLight: false,\r\n isDark: false,\r\n });\r\n this.props.changeSidebarType(\r\n layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED\r\n );\r\n break;\r\n case 'scrollable':\r\n this.setState({ isCondensed: false, isSidebarScrollable: true });\r\n this.props.changeSidebarType(\r\n layoutConstants.LEFT_SIDEBAR_TYPE_SCROLLABLE\r\n );\r\n break;\r\n default:\r\n this.setState({ isCondensed: false, isSidebarScrollable: false });\r\n this.props.changeSidebarType(layoutConstants.LEFT_SIDEBAR_TYPE_FIXED);\r\n break;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n Customize your layout theme\r\n
    \r\n
    \r\n\r\n
    \r\n
    Color Theme
    \r\n\r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n
    */}\r\n\r\n {/*
    \r\n \r\n \r\n Light\r\n \r\n
    */}\r\n\r\n \r\n\r\n
    \r\n \r\n Save theme\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n{/* CHANGED BY DMM 10/28/2022 - EMAIL IS THE ONLY CHOICE! ERRORS IN SRC_API FOR TEXT\r\n-
    \r\n
    Notifications
    \r\n\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 notification preference\r\n \r\n
    \r\n
    \r\n*/}\r\n\r\n
    \r\n
    Set most top asset
    \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 showRightSidebar: state.Layout.showRightSidebar,\r\n layoutType: state.Layout.layoutType,\r\n layoutWidth: state.Layout.layoutWidth,\r\n leftSideBarTheme: state.Layout.leftSideBarTheme,\r\n leftSideBarType: state.Layout.leftSideBarType,\r\n };\r\n};\r\nexport default connect(mapStateToProps, {\r\n hideRightSidebar,\r\n changeLayout,\r\n changeLayoutWidth,\r\n changeSidebarType,\r\n changeSidebarTheme,\r\n})(ThemeCustomizer);\r\n","/* Layout types and other constants */\r\n\r\nexport const LAYOUT_VERTICAL = 'vertical';\r\nexport const LAYOUT_HORIZONTAL = 'topnav';\r\nexport const LAYOUT_DETACHED = 'detached';\r\n\r\nexport const LAYOUT_WIDTH_FLUID = 'fluid';\r\nexport const LAYOUT_WIDTH_BOXED = 'boxed';\r\n\r\nexport const LEFT_SIDEBAR_THEME_DEFAULT = 'default';\r\nexport const LEFT_SIDEBAR_THEME_LIGHT = 'light';\r\nexport const LEFT_SIDEBAR_THEME_DARK = 'dark';\r\n\r\nexport const LEFT_SIDEBAR_TYPE_FIXED = 'fixed';\r\nexport const LEFT_SIDEBAR_TYPE_CONDENSED = 'condensed';\r\nexport const LEFT_SIDEBAR_TYPE_SCROLLABLE = 'scrollable';\r\n","// @flow\r\nimport React, { Component, Suspense } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { changeSidebarTheme, changeSidebarType } from '../redux/actions';\r\nimport * as layoutConstants from '../constants/layout';\r\nimport ThemeCustomizer from '../components/ThemeCustomizer';\r\n\r\nconst LeftSidebar = React.lazy(() => import('../components/LeftSidebar'));\r\nconst Topbar = React.lazy(() => import('../components/Topbar'));\r\nconst Footer = React.lazy(() => import('../components/Footer'));\r\nconst RightSidebar = React.lazy(() => import('../components/RightSidebar'));\r\n\r\ntype VerticalLayoutProps = {\r\n changeLayout: PropTypes.func,\r\n changeSidebarTheme: PropTypes.func,\r\n changeSidebarType: PropTypes.func,\r\n children?: any,\r\n layout: {\r\n leftSideBarType?: string,\r\n leftSideBarTheme?: string,\r\n },\r\n};\r\n\r\ntype VerticalLayoutState = {\r\n isMenuOpened?: boolean,\r\n};\r\n\r\n// loading\r\nconst emptyLoading = () =>
    ;\r\nconst loading = () =>
    ;\r\n\r\nclass VerticalLayout extends Component<\r\n VerticalLayoutProps,\r\n VerticalLayoutState\r\n> {\r\n constructor(props) {\r\n super(props);\r\n this.openLeftMenu = this.openLeftMenu.bind(this);\r\n }\r\n\r\n /**\r\n * Opens the left menu - mobile\r\n */\r\n openLeftMenu = () => {\r\n if (document.body) document.body.classList.add('sidebar-enable');\r\n };\r\n\r\n /**\r\n * Handles the menu on window resizes\r\n */\r\n updateDimensions = () => {\r\n // activate the condensed sidebar if smaller devices like ipad or tablet\r\n if (window.innerWidth >= 768 && window.innerWidth <= 1028) {\r\n this.props.changeSidebarType(layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED);\r\n } else if (window.innerWidth > 1028) {\r\n this.props.changeSidebarType(layoutConstants.LEFT_SIDEBAR_TYPE_FIXED);\r\n }\r\n };\r\n\r\n componentDidMount = () => {\r\n window.addEventListener('resize', this.updateDimensions.bind(this));\r\n this.props.changeSidebarTheme(layoutConstants.LEFT_SIDEBAR_THEME_DARK);\r\n // activate the condensed sidebar if smaller devices like ipad or tablet\r\n if (window.innerWidth >= 768 && window.innerWidth <= 1028) {\r\n this.props.changeSidebarType(layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED);\r\n }\r\n };\r\n\r\n /**\r\n * Removes the listener\r\n */\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions.bind(this));\r\n }\r\n\r\n render() {\r\n // get the child view which we would like to render\r\n const children = this.props.children || null;\r\n\r\n const isCondensed =\r\n this.props.layout.leftSideBarType ===\r\n layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED;\r\n const isLight =\r\n this.props.layout.leftSideBarTheme ===\r\n layoutConstants.LEFT_SIDEBAR_THEME_LIGHT;\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 {children}\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \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 layout: state.Layout,\r\n };\r\n};\r\nexport default connect(mapStateToProps, {\r\n changeSidebarTheme,\r\n changeSidebarType,\r\n})(VerticalLayout);\r\n","// @flow\r\nimport React, { Component, Suspense } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { changeLayout } from '../redux/actions';\r\nimport * as layoutConstants from '../constants/layout';\r\nimport ThemeCustomizer from '../components/ThemeCustomizer';\r\n\r\nconst Topbar = React.lazy(() => import('../components/Topbar'));\r\nconst Navbar = React.lazy(() => import('../components/Navbar'));\r\nconst Footer = React.lazy(() => import('../components/Footer'));\r\nconst RightSidebar = React.lazy(() => import('../components/RightSidebar'));\r\n\r\nconst loading = () =>
    ;\r\n\r\ntype HorizontalLayoutProps = {\r\n changeLayout: PropTypes.func,\r\n children: PropTypes.object,\r\n layout: PropTypes.object,\r\n};\r\n\r\ntype HorizontalLayoutState = {\r\n isMenuOpened: boolean,\r\n};\r\n\r\nclass HorizontalLayout extends Component<\r\n HorizontalLayoutProps,\r\n HorizontalLayoutState\r\n> {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.openMenu = this.openMenu.bind(this);\r\n\r\n this.state = {\r\n isMenuOpened: false,\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.props.changeLayout(layoutConstants.LAYOUT_HORIZONTAL);\r\n };\r\n\r\n /**\r\n * Opens the menu - mobile\r\n */\r\n openMenu = (e) => {\r\n e.preventDefault();\r\n this.setState({ isMenuOpened: !this.state.isMenuOpened });\r\n };\r\n\r\n render() {\r\n // get the child view which we would like to render\r\n const children = this.props.children || null;\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 {children}\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n \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 layout: state.Layout,\r\n };\r\n};\r\nexport default connect(mapStateToProps, { changeLayout })(HorizontalLayout);\r\n","// @flow\r\nimport React, { Component, Suspense } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { changeLayout } from '../redux/actions';\r\nimport ThemeCustomizer from '../components/ThemeCustomizer';\r\nimport * as layoutConstants from '../constants/layout';\r\n\r\nconst LeftSidebar = React.lazy(() => import('../components/LeftSidebar'));\r\nconst Topbar = React.lazy(() => import('../components/Topbar'));\r\nconst Footer = React.lazy(() => import('../components/Footer'));\r\nconst RightSidebar = React.lazy(() => import('../components/RightSidebar'));\r\n\r\nconst loading = () =>
    ;\r\n\r\ntype DetachedLayoutProps = {\r\n changeLayout: PropTypes.func,\r\n children?: any,\r\n layout: {\r\n leftSideBarType?: string,\r\n leftSideBarTheme?: string,\r\n },\r\n};\r\n\r\ntype DetachedLayoutState = {\r\n isMenuOpened?: boolean,\r\n};\r\n\r\nclass DetachedLayout extends Component<\r\n DetachedLayoutProps,\r\n DetachedLayoutState\r\n> {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.openMenu = this.openMenu.bind(this);\r\n\r\n this.state = {\r\n isMenuOpened: false,\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.props.changeLayout(layoutConstants.LAYOUT_DETACHED);\r\n };\r\n\r\n /**\r\n * Opens the menu - mobile\r\n */\r\n openMenu = (e) => {\r\n e.preventDefault();\r\n this.setState({ isMenuOpened: !this.state.isMenuOpened });\r\n if (document.body) document.body.classList.add('sidebar-enable');\r\n };\r\n\r\n render() {\r\n // get the child view which we would like to render\r\n const children = this.props.children || null;\r\n const isCondensed =\r\n this.props.layout.leftSideBarType ===\r\n layoutConstants.LEFT_SIDEBAR_TYPE_CONDENSED;\r\n const isLight =\r\n this.props.layout.leftSideBarTheme ===\r\n layoutConstants.LEFT_SIDEBAR_THEME_LIGHT;\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 {children}\r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \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 layout: state.Layout,\r\n };\r\n};\r\nexport default connect(mapStateToProps, { changeLayout })(DetachedLayout);\r\n","import React, { Component } from 'react';\r\nimport { BrowserRouter, Switch } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { allFlattenRoutes as routes } from './index';\r\nimport { isUserAuthenticated } from '../helpers/authUtils';\r\nimport * as layoutConstants from '../constants/layout';\r\n\r\n// All layouts/containers\r\nimport AuthLayout from '../layouts/Auth';\r\nimport VerticalLayout from '../layouts/Vertical';\r\nimport HorizontalLayout from '../layouts/Horizontal';\r\nimport DetachedLayout from '../layouts/Detached';\r\n\r\n\r\nclass Routes extends Component {\r\n // returns the layout\r\n getLayout = () => {\r\n if (!isUserAuthenticated()) return AuthLayout;\r\n\r\n let layoutCls = VerticalLayout;\r\n\r\n switch (this.props.layout.layoutType) {\r\n case layoutConstants.LAYOUT_HORIZONTAL:\r\n layoutCls = HorizontalLayout;\r\n break;\r\n case layoutConstants.LAYOUT_DETACHED:\r\n layoutCls = DetachedLayout;\r\n break;\r\n default:\r\n layoutCls = VerticalLayout;\r\n break;\r\n }\r\n return layoutCls;\r\n };\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n let oldLayout = { ...this.props.layout };\r\n delete oldLayout.showRightSidebar;\r\n let newLayout = { ...nextProps.layout };\r\n delete newLayout.showRightSidebar;\r\n return (\r\n JSON.stringify(oldLayout) !== JSON.stringify(newLayout) ||\r\n JSON.stringify(this.props.user) !== JSON.stringify(nextProps.user)\r\n );\r\n }\r\n\r\n render() {\r\n const Layout = this.getLayout();\r\n // rendering the router with layout\r\n return (\r\n \r\n \r\n \r\n {routes.map((route, index) => {\r\n return (\r\n !route.children && (\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 layout: state.Layout,\r\n user: state.Auth.user,\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n null\r\n)(Routes);\r\n","export function configureFakeBackend() {\r\n let users = [\r\n {\r\n id: 1,\r\n username: 'gisreviewer@emht.com',\r\n password: '#GIS1sAwesome!',\r\n firstName: 'Test',\r\n lastName: 'User',\r\n role: 'Admin',\r\n },\r\n ];\r\n let realFetch = fetch;\r\n fetch = function (url, opts) {\r\n return new Promise((resolve, reject) => {\r\n // wrap in timeout to simulate server api call\r\n setTimeout(() => {\r\n // authenticate\r\n if (url.endsWith('/users/authenticate') && opts.method === 'POST') {\r\n // get parameters from post request\r\n let params = JSON.parse(opts.body);\r\n\r\n // find if any user matches login credentials\r\n let filteredUsers = users.filter((user) => {\r\n return (\r\n user.username === params.username &&\r\n user.password === params.password\r\n );\r\n });\r\n\r\n if (filteredUsers.length) {\r\n // if login details are valid return user details and fake jwt token\r\n let user = filteredUsers[0];\r\n let responseJson = {\r\n id: user.id,\r\n username: user.username,\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n role: 'Admin',\r\n token:\r\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjb2RlcnRoZW1lcyIsImlhdCI6MTU4NzM1NjY0OSwiZXhwIjoxOTAyODg5NDQ5LCJhdWQiOiJjb2RlcnRoZW1lcy5jb20iLCJzdWIiOiJzdXBwb3J0QGNvZGVydGhlbWVzLmNvbSIsImxhc3ROYW1lIjoiVGVzdCIsIkVtYWlsIjoic3VwcG9ydEBjb2RlcnRoZW1lcy5jb20iLCJSb2xlIjoiQWRtaW4iLCJmaXJzdE5hbWUiOiJIeXBlciJ9.P27f7JNBF-vOaJFpkn-upfEh3zSprYfyhTOYhijykdI',\r\n };\r\n resolve({ ok: true, json: () => responseJson });\r\n } else {\r\n // else return error\r\n reject('Invalid login attempt.');\r\n }\r\n return;\r\n }\r\n\r\n // register\r\n if (url.endsWith('/users/register') && opts.method === 'POST') {\r\n // get parameters from post request\r\n let params = JSON.parse(opts.body);\r\n\r\n // add new users\r\n let { firstName, lastName } = params.fullname.split(' ');\r\n let newUser = {\r\n id: users.length + 1,\r\n username: firstName,\r\n password: params.password,\r\n firstName: firstName,\r\n lastName: lastName,\r\n role: 'Admin',\r\n };\r\n users.push({ newUser });\r\n\r\n let responseJson = {\r\n id: newUser.id,\r\n username: newUser.username,\r\n firstName: newUser.firstName,\r\n lastName: newUser.lastName,\r\n role: newUser.role,\r\n token:\r\n 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjb2RlcnRoZW1lcyIsImlhdCI6MTU4NzM1NjY0OSwiZXhwIjoxOTAyODg5NDQ5LCJhdWQiOiJjb2RlcnRoZW1lcy5jb20iLCJzdWIiOiJzdXBwb3J0QGNvZGVydGhlbWVzLmNvbSIsImxhc3ROYW1lIjoiVGVzdCIsIkVtYWlsIjoic3VwcG9ydEBjb2RlcnRoZW1lcy5jb20iLCJSb2xlIjoiQWRtaW4iLCJmaXJzdE5hbWUiOiJIeXBlciJ9.P27f7JNBF-vOaJFpkn-upfEh3zSprYfyhTOYhijykdI',\r\n };\r\n resolve({ ok: true, json: () => responseJson });\r\n return;\r\n }\r\n\r\n // forget password\r\n if (url.endsWith('/users/password-reset') && opts.method === 'POST') {\r\n // get parameters from post request\r\n let params = JSON.parse(opts.body);\r\n\r\n // find if any user matches login credentials\r\n let filteredUsers = users.filter((user) => {\r\n return user.username === params.username;\r\n });\r\n\r\n if (filteredUsers.length) {\r\n let responseJson = {\r\n message:\r\n \"We've sent you a link to reset password to your registered email.\",\r\n };\r\n resolve({ ok: true, json: () => responseJson });\r\n } else {\r\n // else return error\r\n reject(\r\n 'Sorry, we could not find any registered user with entered username'\r\n );\r\n }\r\n return;\r\n }\r\n\r\n // get users\r\n if (url.endsWith('/users') && opts.method === 'GET') {\r\n // check for fake auth token in header and return users if valid, this security is implemented server side in a real application\r\n if (\r\n opts.headers &&\r\n opts.headers.Authorization ===\r\n 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjb2RlcnRoZW1lcyIsImlhdCI6MTU4NzM1NjY0OSwiZXhwIjoxOTAyODg5NDQ5LCJhdWQiOiJjb2RlcnRoZW1lcy5jb20iLCJzdWIiOiJzdXBwb3J0QGNvZGVydGhlbWVzLmNvbSIsImxhc3ROYW1lIjoiVGVzdCIsIkVtYWlsIjoic3VwcG9ydEBjb2RlcnRoZW1lcy5jb20iLCJSb2xlIjoiQWRtaW4iLCJmaXJzdE5hbWUiOiJIeXBlciJ9.P27f7JNBF-vOaJFpkn-upfEh3zSprYfyhTOYhijykdI'\r\n ) {\r\n resolve({ ok: true, json: () => users });\r\n } else {\r\n // return 401 not authorised if token is null or invalid\r\n reject('Unauthorised');\r\n }\r\n\r\n return;\r\n }\r\n\r\n //console.log(url);\r\n //console.log(opts);\r\n\r\n if (\r\n url.endsWith('/applyEdits') ||\r\n url.endsWith('/addAttachment?f=json')\r\n ) {\r\n realFetch(url, opts).then((response) => resolve(response));\r\n return;\r\n }\r\n //realFetch(url, opts).then((response) => resolve(response));\r\n realFetch(url).then((response) => resolve(response));\r\n }, 500);\r\n });\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport Routes from './routes/Routes';\r\n\r\n// setup fake backend\r\nimport { configureFakeBackend } from './helpers';\r\n\r\n// Themes\r\nimport './assets/scss/Saas.scss';\r\n\r\nconfigureFakeBackend();\r\n\r\ntype AppProps = {};\r\n\r\n/**\r\n * Main app component\r\n */\r\nclass App extends Component {\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\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 // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\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","// @flow\r\nimport {\r\n CHANGE_LAYOUT,\r\n CHANGE_LAYOUT_WIDTH,\r\n CHANGE_SIDEBAR_THEME,\r\n CHANGE_SIDEBAR_TYPE,\r\n TOGGLE_RIGHT_SIDEBAR,\r\n SHOW_RIGHT_SIDEBAR,\r\n HIDE_RIGHT_SIDEBAR,\r\n} from './constants';\r\n\r\nimport * as layoutConstants from '../../constants/layout';\r\n\r\nconst INIT_STATE = {\r\n layoutType: layoutConstants.LAYOUT_VERTICAL,\r\n layoutWidth: layoutConstants.LAYOUT_WIDTH_FLUID,\r\n leftSideBarTheme: layoutConstants.LEFT_SIDEBAR_THEME_DEFAULT,\r\n leftSideBarType: layoutConstants.LEFT_SIDEBAR_TYPE_FIXED,\r\n showRightSidebar: false,\r\n};\r\n\r\ntype LayoutAction = { type: string, payload?: string | null };\r\ntype State = { showRightSidebar?: boolean, +value?: boolean };\r\n\r\nconst Layout = (state: State = INIT_STATE, action: LayoutAction) => {\r\n switch (action.type) {\r\n case CHANGE_LAYOUT:\r\n return {\r\n ...state,\r\n layoutType: action.payload,\r\n };\r\n case CHANGE_LAYOUT_WIDTH:\r\n return {\r\n ...state,\r\n layoutWidth: action.payload,\r\n };\r\n case CHANGE_SIDEBAR_THEME:\r\n return {\r\n ...state,\r\n leftSideBarTheme: action.payload,\r\n };\r\n case CHANGE_SIDEBAR_TYPE:\r\n return {\r\n ...state,\r\n leftSideBarType: action.payload,\r\n };\r\n case TOGGLE_RIGHT_SIDEBAR:\r\n return {\r\n ...state,\r\n showRightSidebar: !state.showRightSidebar,\r\n };\r\n case SHOW_RIGHT_SIDEBAR:\r\n return {\r\n ...state,\r\n showRightSidebar: true,\r\n };\r\n case HIDE_RIGHT_SIDEBAR:\r\n return {\r\n ...state,\r\n showRightSidebar: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default Layout;\r\n","// @flow\r\nimport {\r\n LOGIN_USER,\r\n LOGIN_USER_SUCCESS,\r\n LOGIN_USER_FAILED,\r\n LOGOUT_USER,\r\n REGISTER_USER,\r\n REGISTER_USER_SUCCESS,\r\n REGISTER_USER_FAILED,\r\n FORGET_PASSWORD,\r\n FORGET_PASSWORD_SUCCESS,\r\n FORGET_PASSWORD_FAILED,\r\n RESET_PASSWORD,\r\n RESET_PASSWORD_SUCCESS,\r\n RESET_PASSWORD_FAILED,\r\n} from './constants';\r\n\r\nimport { getLoggedInUser } from '../../helpers/authUtils';\r\n\r\nconst INIT_STATE = {\r\n user: getLoggedInUser(),\r\n loading: false,\r\n};\r\n\r\ntype AuthAction = { type: string, payload: {} | string };\r\ntype State = { user?: {} | null, loading?: boolean, +value?: boolean };\r\n\r\nconst Auth = (state: State = INIT_STATE, action: AuthAction) => {\r\n switch (action.type) {\r\n case LOGIN_USER:\r\n return { ...state, loading: true };\r\n case LOGIN_USER_SUCCESS:\r\n return { ...state, user: action.payload, loading: false, error: null };\r\n case LOGIN_USER_FAILED:\r\n return { ...state, error: action.payload, loading: false };\r\n case REGISTER_USER:\r\n return { ...state, loading: true };\r\n case REGISTER_USER_SUCCESS:\r\n return { ...state, user: action.payload, loading: false, error: null };\r\n case REGISTER_USER_FAILED:\r\n return { ...state, error: action.payload, loading: false };\r\n case LOGOUT_USER:\r\n return { ...state, user: null };\r\n case FORGET_PASSWORD:\r\n return { ...state, loading: true };\r\n case FORGET_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n passwordResetStatus: action.payload,\r\n loading: false,\r\n error: null,\r\n };\r\n case FORGET_PASSWORD_FAILED:\r\n return { ...state, error: action.payload, loading: false };\r\n case RESET_PASSWORD:\r\n return { ...state, loading: true };\r\n case RESET_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n passwordResetStatus: action.payload,\r\n loading: false,\r\n error: null,\r\n };\r\n case RESET_PASSWORD_FAILED:\r\n return { ...state, error: action.payload, loading: false };\r\n default:\r\n return { ...state };\r\n }\r\n};\r\n\r\nexport default Auth;\r\n","import {\r\n INIT_MENU,\r\n INIT_MENU_SUCCESS,\r\n CHANGE_ACTIVE_MENU_FROM_LOCATION,\r\n CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS,\r\n} from './constants';\r\n\r\ntype Action = { type: string, payload: {} };\r\ntype State = { +value: boolean };\r\n\r\nconst AppMenu = (state: State = {}, action: Action) => {\r\n switch (action.type) {\r\n case INIT_MENU:\r\n return action.payload;\r\n case INIT_MENU_SUCCESS:\r\n return { ...state, ...action.payload };\r\n case CHANGE_ACTIVE_MENU_FROM_LOCATION:\r\n return { ...state };\r\n case CHANGE_ACTIVE_MENU_FROM_LOCATION_SUCCESS:\r\n return { ...state, ...action.payload };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default AppMenu;\r\n","import { SET_CONFIG, CONFIG_FETCH } from './constants';\r\n\r\ntype Action = { type: string, payload: {} };\r\n\r\nexport const initialState = {\r\n loaded: false,\r\n};\r\n\r\nconst AppConfig = (state = initialState, action) => {\r\n const { config } = action;\r\n switch (action.type) {\r\n case SET_CONFIG:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n loaded: true,\r\n config,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default AppConfig;\r\n","// @flow\r\n\r\nimport { combineReducers } from 'redux';\r\nimport Layout from './layout/reducers';\r\nimport Auth from './auth/reducers';\r\nimport AppMenu from './appMenu/reducers';\r\nimport AppConfig from './appConfig/reducers';\r\n\r\nexport default combineReducers({\r\n Auth,\r\n AppMenu,\r\n Layout,\r\n AppConfig,\r\n});\r\n","// @flow\r\nimport { Cookies } from 'react-cookie';\r\nimport { all, call, fork, put, takeEvery } from 'redux-saga/effects';\r\n\r\nimport {\r\n LOGIN_USER,\r\n LOGOUT_USER,\r\n REGISTER_USER,\r\n FORGET_PASSWORD,\r\n RESET_PASSWORD,\r\n} from './constants';\r\n\r\nimport {\r\n loginUserSuccess,\r\n loginUserFailed,\r\n registerUserSuccess,\r\n registerUserFailed,\r\n forgetPasswordSuccess,\r\n forgetPasswordFailed,\r\n resetPasswordSuccess,\r\n resetPasswordFailed,\r\n} from './actions';\r\nimport { UserAPI } from '../../services/users.services';\r\nimport { workorderService } from '../../services/workorder.service';\r\nimport { CrudOperations } from '../../services/CRUDoperations.service';\r\n\r\n/**\r\n * Sets the session\r\n * @param {*} user\r\n */\r\nconst setSession = (user) => {\r\n let cookies = new Cookies();\r\n if (user) cookies.set('user', JSON.stringify(user), { path: '/' });\r\n else cookies.remove('user', { path: '/' });\r\n};\r\n/**\r\n * Login the user\r\n * @param {*} payload - username and password\r\n */\r\nfunction* login({ payload: { username, password, history } }) {\r\n const __accountObj = {\r\n Email: username,\r\n Password: password,\r\n UserId: '',\r\n Code: '',\r\n IsEmailSent: false,\r\n IsPasswordReset: false,\r\n RememberMe: true,\r\n };\r\n\r\n try {\r\n const result = yield UserAPI.SignIn(__accountObj);\r\n if (result.data.errors.length > 0) {\r\n yield put(loginUserFailed(result.data.errors[0].description));\r\n setSession(null);\r\n } else {\r\n const _user = {\r\n id: result.data.id,\r\n department: result.data.department,\r\n username: username,\r\n token: result.data.id,\r\n role: 'Admin',\r\n roles: result.data.roles,\r\n notificationType: result.data.preferredContact,\r\n };\r\n\r\n const roleIndex = result.data.roles.findIndex(\r\n (r) =>\r\n r.id === 'e217ad31-13c9-452e-a800-d2c04215396c' ||\r\n r.id === '017bf016-611d-4ddd-b5d8-f59a998c31f1' ||\r\n r.id === 'ef05fa07-09f7-4789-8ab6-f89e3c02a8f1'\r\n );\r\n\r\n const departments = yield CrudOperations.Get('Departments');\r\n\r\n const deptIndex = departments.data.findIndex(\r\n (dept) => dept.name === _user.department\r\n );\r\n if (roleIndex > -1 && deptIndex > -1) {\r\n setSession(_user);\r\n const managerRoleIndex = result.data.roles.findIndex(\r\n (r) => r.id === 'ef05fa07-09f7-4789-8ab6-f89e3c02a8f1'\r\n );\r\n\r\n if (managerRoleIndex > -1) {\r\n setTimeout(() => {\r\n window.location.href = `/dashboard`;\r\n //yield put(push('/dashboard'));\r\n }, 10);\r\n }\r\n\r\n yield put(loginUserSuccess(username));\r\n } else {\r\n yield put(loginUserFailed('not authorize'));\r\n setSession(null);\r\n }\r\n }\r\n } catch (error) {\r\n yield put(loginUserFailed('Error fetching data from server'));\r\n setSession(null);\r\n }\r\n}\r\n\r\n/**\r\n * Logout the user\r\n * @param {*} param0\r\n */\r\nfunction* logout({ payload: { history } }) {\r\n try {\r\n setSession(null);\r\n yield call(() => {\r\n history.push('/account/login');\r\n });\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Register the user\r\n * payload: user Object type\r\n */\r\nfunction* register({ payload: newUserObj }) {\r\n try {\r\n const result = yield UserAPI.CreateUser(newUserObj);\r\n if (result.data.errors.length > 0) {\r\n let message = '';\r\n for (let index = 0; index < result.data.errors.length; index++) {\r\n const error = result.data.errors[index];\r\n message = message + ' ' + error.description;\r\n }\r\n yield put(registerUserFailed(message));\r\n } else {\r\n yield put(registerUserSuccess('Account created successfully'));\r\n }\r\n } catch (error) {\r\n console.log('Error :: ', error);\r\n yield put(registerUserFailed('Error creating new user'));\r\n }\r\n}\r\n\r\n/**\r\n * forget password\r\n */\r\nfunction* forgetPassword({ payload: { username } }) {\r\n let isEmailSent = false;\r\n try {\r\n const response = yield UserAPI.ForgotPassword({ email: username });\r\n isEmailSent = response.data;\r\n if (response.data.errors.length > 0) {\r\n yield put(forgetPasswordFailed('Error fetching data from server'));\r\n } else {\r\n yield put(\r\n forgetPasswordSuccess(\r\n \"If this email exist in our system, you'll get an email shortly with instructions to reset password\"\r\n )\r\n );\r\n }\r\n } catch (error) {\r\n yield put(\r\n forgetPasswordSuccess(\r\n \"If this email exist in our system, you'll get an email shortly with instructions to reset password\"\r\n )\r\n );\r\n }\r\n}\r\nfunction* resetPassword({ payload: { email, password, code } }) {\r\n try {\r\n const result = yield UserAPI.ResetPassword({ email, password, code });\r\n if (result.data.errors.length > 0) {\r\n yield put(resetPasswordFailed(result.data.errors[0].description));\r\n } else {\r\n yield put(resetPasswordSuccess('Password updated successfully'));\r\n }\r\n } catch (error) {\r\n yield put(resetPasswordFailed('Error Fetching data from the server'));\r\n }\r\n}\r\n\r\nexport function* watchLoginUser(): any {\r\n yield takeEvery(LOGIN_USER, login);\r\n}\r\n\r\nexport function* watchLogoutUser(): any {\r\n yield takeEvery(LOGOUT_USER, logout);\r\n}\r\n\r\nexport function* watchRegisterUser(): any {\r\n yield takeEvery(REGISTER_USER, register);\r\n}\r\n\r\nexport function* watchForgetPassword(): any {\r\n yield takeEvery(FORGET_PASSWORD, forgetPassword);\r\n}\r\nexport function* watchResetPassword(): any {\r\n yield takeEvery(RESET_PASSWORD, resetPassword);\r\n}\r\n\r\nfunction* authSaga(): any {\r\n yield all([\r\n fork(watchLoginUser),\r\n fork(watchLogoutUser),\r\n fork(watchRegisterUser),\r\n fork(watchForgetPassword),\r\n fork(watchResetPassword),\r\n ]);\r\n}\r\n\r\nexport default authSaga;\r\n","// @flow\r\nimport { all, call, fork, takeEvery, put } from 'redux-saga/effects';\r\n\r\nimport {\r\n CHANGE_LAYOUT,\r\n CHANGE_LAYOUT_WIDTH,\r\n CHANGE_SIDEBAR_THEME,\r\n CHANGE_SIDEBAR_TYPE,\r\n TOGGLE_RIGHT_SIDEBAR,\r\n SHOW_RIGHT_SIDEBAR,\r\n HIDE_RIGHT_SIDEBAR,\r\n} from './constants';\r\nimport * as layoutConstants from '../../constants';\r\nimport {\r\n changeLayoutWidth as changeLayoutWidthAction,\r\n changeSidebarTheme as changeLeftSidebarThemeAction,\r\n changeSidebarType as changeSidebarTypeAction,\r\n} from './actions';\r\n\r\n/**\r\n * Changes the body attribute\r\n */\r\nfunction changeBodyAttribute(attribute, value) {\r\n if (document.body) document.body.setAttribute(attribute, value);\r\n return true;\r\n}\r\n\r\n/**\r\n * Toggle the class on body\r\n * @param {*} cssClass\r\n */\r\nfunction manageBodyClass(cssClass, action = 'toggle') {\r\n switch (action) {\r\n case 'add':\r\n if (document.body) document.body.classList.add(cssClass);\r\n break;\r\n case 'remove':\r\n if (document.body) document.body.classList.remove(cssClass);\r\n break;\r\n default:\r\n if (document.body) document.body.classList.toggle(cssClass);\r\n break;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * ---------------------------------------------------------------------------------------------------------------------------\r\n * Note: Following are the functions which allows you to save the user prefrences on backend side by making an api request.\r\n * For now, we are just applying the required logic on frontend side\r\n * ----------------------------------------------------------------------------------------------------------------------------\r\n */\r\n\r\n/**\r\n * Changes the layout type\r\n * @param {*} param0\r\n */\r\nfunction* changeLayout({ payload: layout }) {\r\n try {\r\n yield call(changeBodyAttribute, 'data-layout', layout);\r\n if (layout === layoutConstants.LAYOUT_VERTICAL) {\r\n yield put(changeLeftSidebarThemeAction(layoutConstants.LEFT_SIDEBAR_THEME_DEFAULT));\r\n yield put(changeSidebarTypeAction(layoutConstants.LEFT_SIDEBAR_TYPE_FIXED));\r\n }\r\n\r\n if (layout === layoutConstants.LAYOUT_HORIZONTAL) {\r\n yield put(changeLeftSidebarThemeAction(layoutConstants.LEFT_SIDEBAR_THEME_DEFAULT));\r\n yield put(changeSidebarTypeAction(layoutConstants.LEFT_SIDEBAR_TYPE_FIXED));\r\n }\r\n\r\n if (layout === layoutConstants.LAYOUT_DETACHED) {\r\n yield put(changeLayoutWidthAction(layoutConstants.LAYOUT_WIDTH_FLUID));\r\n yield put(changeSidebarTypeAction(layoutConstants.LEFT_SIDEBAR_TYPE_SCROLLABLE));\r\n yield put(changeLeftSidebarThemeAction(layoutConstants.LEFT_SIDEBAR_THEME_DEFAULT));\r\n }\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Changes the layout width\r\n * @param {*} param0\r\n */\r\nfunction* changeLayoutWidth({ payload: width }) {\r\n try {\r\n yield call(changeBodyAttribute, 'data-layout-mode', width);\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Changes the left sidebar theme\r\n * @param {*} param0\r\n */\r\nfunction* changeLeftSidebarTheme({ payload: theme }) {\r\n try {\r\n yield call(changeBodyAttribute, 'data-leftbar-theme', theme);\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Changes the left sidebar type\r\n * @param {*} param0\r\n */\r\nfunction* changeLeftSidebarType({ payload: type }) {\r\n try {\r\n yield call(changeBodyAttribute, 'data-leftbar-compact-mode', type);\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Toggles the rightsidebar\r\n */\r\nfunction* toggleRightSidebar() {\r\n try {\r\n yield call(manageBodyClass, 'right-bar-enabled');\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Show the rightsidebar\r\n */\r\nfunction* showRightSidebar() {\r\n try {\r\n yield call(manageBodyClass, 'right-bar-enabled', 'add');\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Hides the rightsidebar\r\n */\r\nfunction* hideRightSidebar() {\r\n try {\r\n yield call(manageBodyClass, 'right-bar-enabled', 'remove');\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Watchers\r\n */\r\nexport function* watchChangeLayoutType(): any {\r\n yield takeEvery(CHANGE_LAYOUT, changeLayout);\r\n}\r\n\r\nexport function* watchChangeLayoutWidth(): any {\r\n yield takeEvery(CHANGE_LAYOUT_WIDTH, changeLayoutWidth);\r\n}\r\n\r\nexport function* watchChangeLeftSidebarTheme(): any {\r\n yield takeEvery(CHANGE_SIDEBAR_THEME, changeLeftSidebarTheme);\r\n}\r\n\r\nexport function* watchChangeLeftSidebarType(): any {\r\n yield takeEvery(CHANGE_SIDEBAR_TYPE, changeLeftSidebarType);\r\n}\r\n\r\nexport function* watchToggleRightSidebar(): any {\r\n yield takeEvery(TOGGLE_RIGHT_SIDEBAR, toggleRightSidebar);\r\n}\r\n\r\nexport function* watchShowRightSidebar(): any {\r\n yield takeEvery(SHOW_RIGHT_SIDEBAR, showRightSidebar);\r\n}\r\n\r\nexport function* watchHideRightSidebar(): any {\r\n yield takeEvery(HIDE_RIGHT_SIDEBAR, hideRightSidebar);\r\n}\r\n\r\nfunction* LayoutSaga(): any {\r\n yield all([\r\n fork(watchChangeLayoutType),\r\n fork(watchChangeLayoutWidth),\r\n fork(watchChangeLeftSidebarTheme),\r\n fork(watchChangeLeftSidebarType),\r\n fork(watchToggleRightSidebar),\r\n fork(watchShowRightSidebar),\r\n fork(watchHideRightSidebar),\r\n ]);\r\n}\r\n\r\nexport default LayoutSaga;\r\n","// @flow\r\n\r\nimport MenuItem from './models';\r\n\r\n/**\r\n * Flatten the nested list of menu items\r\n */\r\nlet uuid = 1;\r\n\r\nconst assignIdAndParent = (menuItems: Array, parentId?: number) => {\r\n menuItems = menuItems || [];\r\n menuItems.forEach(item => {\r\n const id = item.id || uuid;\r\n uuid += 1;\r\n item.id = id;\r\n item.parentId = item.parentId || parentId;\r\n item.active = false;\r\n\r\n if (typeof item.children !== 'undefined') {\r\n assignIdAndParent(item.children, id);\r\n }\r\n });\r\n};\r\n\r\nexport default (menuItems: Array) => {\r\n assignIdAndParent(menuItems);\r\n return menuItems;\r\n};\r\n","// @flow\r\nimport { all, call, put, fork, takeEvery } from 'redux-saga/effects';\r\n\r\nimport { INIT_MENU, CHANGE_ACTIVE_MENU_FROM_LOCATION } from './constants';\r\nimport { authProtectedRoutes as routes } from '../../routes';\r\nimport assignIds from './utils';\r\nimport { initMenuSuccess, changeActiveMenuFromLocationSuccess } from './actions';\r\n\r\n/**\r\n * Activate menu items from location\r\n * @param {*} menuItems\r\n */\r\nconst getActivatedMenuItemIds = menuItems => {\r\n var matchingItems = [];\r\n for (var menuItem of menuItems) {\r\n if (window.location.pathname.indexOf(menuItem.path) === 0) {\r\n matchingItems.push(menuItem.id);\r\n }\r\n\r\n if (typeof menuItem.children !== 'undefined') {\r\n matchingItems = [...matchingItems, ...getActivatedMenuItemIds(menuItem.children)];\r\n }\r\n }\r\n return matchingItems;\r\n};\r\n\r\n/**\r\n * Initilizes the menu\r\n */\r\nfunction* initMenuAndItems() {\r\n try {\r\n const menuItems = assignIds(routes);\r\n yield put(initMenuSuccess(menuItems));\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * change the active menu item based on location\r\n */\r\nfunction* changeActiveMenuFromLocation() {\r\n try {\r\n const menuItems = assignIds(routes);\r\n const activatedMenuItemIds = yield call(getActivatedMenuItemIds, menuItems);\r\n yield put(changeActiveMenuFromLocationSuccess(activatedMenuItemIds));\r\n } catch (error) {}\r\n}\r\n\r\n/**\r\n * Watchers\r\n */\r\nexport function* watchMenuInit(): any {\r\n yield takeEvery(INIT_MENU, initMenuAndItems);\r\n}\r\n\r\nexport function* watchMenuChange(): any {\r\n yield takeEvery(CHANGE_ACTIVE_MENU_FROM_LOCATION, changeActiveMenuFromLocation);\r\n}\r\n\r\nfunction* appMenuSaga(): any {\r\n yield all([fork(watchMenuInit), fork(watchMenuChange)]);\r\n}\r\n\r\nexport default appMenuSaga;\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { SET_CONFIG, CONFIG_FETCH } from './constants';\r\n\r\nimport { getAppConfig } from './request';\r\n\r\nfunction* fetchConfig() {\r\n const config = yield getAppConfig();\r\n // create and yield a dispatch Effect\r\n yield put({ type: SET_CONFIG, config });\r\n}\r\n\r\nexport default fetchConfig;\r\n","import Axios from 'axios';\r\n/**\r\n * Make a request for the App Config [public/config] with makeRequest()\r\n * @return { Promise} Promise returned by makeRequest()\r\n */\r\nexport function getAppConfig() {\r\n return new Promise((resolve, reject) => {\r\n Axios.get('/config.json').then((resp) => resolve(resp.data));\r\n });\r\n}\r\n","// @flow\r\nimport { all } from 'redux-saga/effects';\r\nimport authSaga from './auth/saga';\r\nimport layoutSaga from './layout/saga';\r\nimport appMenuSaga from './appMenu/saga';\r\nimport appConfigSaga from './appConfig/saga';\r\n\r\nexport default function* rootSaga(getState: any): any {\r\n yield all([authSaga(), layoutSaga(), appMenuSaga(), appConfigSaga()]);\r\n}\r\n","// @flow\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport reducers from './reducers';\r\nimport sagas from './sagas';\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\nconst middlewares = [sagaMiddleware];\r\n\r\nexport function configureStore(initialState: {}) {\r\n const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\n const store = createStore(reducers, initialState, composeEnhancers(applyMiddleware(...middlewares)));\r\n sagaMiddleware.run(sagas);\r\n return store;\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nimport { Provider } from 'react-redux';\r\nimport { configureStore } from './redux/store';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","// @flow\r\nimport {\r\n CHANGE_LAYOUT,\r\n CHANGE_LAYOUT_WIDTH,\r\n CHANGE_SIDEBAR_THEME,\r\n CHANGE_SIDEBAR_TYPE,\r\n TOGGLE_RIGHT_SIDEBAR,\r\n SHOW_RIGHT_SIDEBAR,\r\n HIDE_RIGHT_SIDEBAR,\r\n} from './constants';\r\n\r\ntype LayoutAction = { type: string, payload?: string | null };\r\n\r\nexport const changeLayout = (layout: string): LayoutAction => ({\r\n type: CHANGE_LAYOUT,\r\n payload: layout,\r\n});\r\n\r\nexport const changeLayoutWidth = (width: string): LayoutAction => ({\r\n type: CHANGE_LAYOUT_WIDTH,\r\n payload: width,\r\n});\r\n\r\nexport const changeSidebarTheme = (theme: string): LayoutAction => ({\r\n type: CHANGE_SIDEBAR_THEME,\r\n payload: theme,\r\n});\r\n\r\nexport const changeSidebarType = (sidebarType: string): LayoutAction => ({\r\n type: CHANGE_SIDEBAR_TYPE,\r\n payload: sidebarType,\r\n});\r\n\r\nexport const toggleRightSidebar = (): LayoutAction => ({\r\n type: TOGGLE_RIGHT_SIDEBAR,\r\n payload: null,\r\n});\r\n\r\nexport const showRightSidebar = (): LayoutAction => ({\r\n type: SHOW_RIGHT_SIDEBAR,\r\n payload: null,\r\n});\r\n\r\nexport const hideRightSidebar = (): LayoutAction => ({\r\n type: HIDE_RIGHT_SIDEBAR,\r\n payload: null,\r\n});\r\n","import React, { Fragment } from 'react';\r\nimport notFoundImg from '../../assets/images/file-searching.svg';\r\n\r\nconst NoDataAvailable = () => {\r\n return (\r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n
    \r\n \"\"\r\n {/*

    404

    */}\r\n

    No Data available

    \r\n

    \r\n There is no data available to report on at this time.\r\n

    \r\n\r\n {/* \r\n Return Home\r\n */}\r\n
    \r\n
    \r\n );\r\n};\r\nexport default NoDataAvailable;\r\n","/**\r\n * Performs CRUD operations from SRC backend service\r\n *\r\n */\r\n\r\nimport Axios from 'axios';\r\n\r\n// SRC API http request config\r\nexport const _src_backend_baseurl = Axios.create({\r\n baseURL: process.env.REACT_APP_WOC_API_URL, //'https://localhost:44308/api', //'https://demogis.emht.com/srcapi/api', //\r\n});\r\n\r\nexport const CrudOperations = {\r\n Create: (Entity, EntityObj) => {\r\n return _src_backend_baseurl.post(`/${Entity}`, EntityObj);\r\n },\r\n Post: (Entity, EntityObj) => {\r\n return _src_backend_baseurl.post(`/${Entity}`, EntityObj);\r\n },\r\n Get: (Entity) => {\r\n return _src_backend_baseurl.get(`/${Entity}`);\r\n },\r\n GetByID: (Entity, EntityObjID) => {\r\n return _src_backend_baseurl.get(`/${Entity}/${EntityObjID}`);\r\n },\r\n Delete: (Entity, EntityObjID) => {\r\n return _src_backend_baseurl.delete(`/${Entity}/${EntityObjID}`);\r\n },\r\n Update: (Entity, EntityObj) => {\r\n return _src_backend_baseurl.put(`/${Entity}`, EntityObj);\r\n },\r\n VerifyItemUsedForDeletion: (id, entity) => {\r\n return _src_backend_baseurl.get(\r\n `WorkOrders/VerifyItemUsed/${id}/${entity}`\r\n );\r\n },\r\n GetResourcesByDepartment: (departmentID) => {\r\n return _src_backend_baseurl.get(\r\n `resources/GetResourcesByDepartment/${departmentID}`\r\n );\r\n },\r\n GetServicesByDepartment: (departmentID) => {\r\n return _src_backend_baseurl.get(\r\n `services/GetServicesByDepartment/${departmentID}`\r\n );\r\n },\r\n GetProblemResolutions: () => {\r\n return _src_backend_baseurl.get(`/ProblemResolutions`);\r\n },\r\n GetProblemResolutionsByDepartment: (departmentID) => {\r\n return _src_backend_baseurl.get(\r\n `/ProblemResolutions/GetProblemResolutionsByDepartment/${departmentID}`\r\n );\r\n },\r\n GetProblemResolutionsByAsset: (assetID) => {\r\n return _src_backend_baseurl.get(\r\n `/ProblemResolutions/GetProblemResolutionsByAsset/${assetID}`\r\n );\r\n },\r\n};\r\n\r\nexport const CurrencyFormater = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n});\r\n\r\nexport const GlobalFormatter = {\r\n FormatUSD: (price) => {\r\n return CurrencyFormater.format(price);\r\n },\r\n};\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAABdCAMAAACsCRuQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAAMDAwQEBAUFBQYGBggICAkJCQsLCw0NDQ4ODhAQEBERERISEhMTExYWFhgYGBkZGRoaGhsbGxwcHB0dHR8fHx8hJR4iKCAgICIiIiQkJCYpLigoKCkpKSsrKywsLC8vLzExMTIyMjMzMzQ0NDU1NTY2NjY6Pzg4ODo6Ojw8PBIoSxw+dCo+XB1BejBBXDxFVTxGVj1HVyJAbyxBYS5DZC5EZi9FaDZKaDlUfUBAQEJCQkREREZGRkdHR0hISElJSUpKSktLS0tNT0xMTEBKW1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1daXlhYWFtbW1xcXF1dXV5eXmBgYGJiYmNjY2RkZGVlZWZmZmdnZ2hoaGpqamtra2xsbG5ubm9vb25wc3BwcHFxcXJycnNzc3R0dHd3d3l5eXp6ent7e3x8fH19fQs8hws9jBhIlA5NrwBGtA9RuBBSuR9cvSJKiyJMkSRPkydWoSBdvStgsixity9owjBpwj90x0VehVVzokB0x09/ywCBtA+IuBCJuR+QvSCRvS+YwjCZwj+gx3eAjnuLo36MolCAzFeFzV+L0EChx0+oy1CpzF+w0GCM0G+X1XqYyHCX1WCw0G+41X+i2X/A2YCAgIODg4SEhIWFhYiIiImJiYuLi42NjY6Ojo+Pj4GKl5KSkpOTk5WVlZmZmZqampubm5ycnJ2dnZ6enqGhoaKioqampqioqKqqqqurq62tra6urq+vr7Ozs7S0tICj2o+u3pyrwZCu3oDA2o/I3q/F57/R7M/n8fz/3ebu8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM685asAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7CAAAOwgEVKEqAAAAIjUlEQVR4Xu2a+b9WUxSHX4RkLhkylCFDMs8NJFMkFApF5szcwRAV9ZYG5KIbut0oU4NUUoZKkfxb215rf/d+9z5n7XNOIee87vPLu9bauz7ree85++xz3lNT/zN6hJudHuFmp0c4RudiBBWnoHBni2Y2kkpTSJh1iSZQLiDsdImZKFaWXOHZMG1pxed0DFQUX7h74oiTar37nnL2yHue2mpKTrdDqa6mUHbC28YfWGPOeFKpLRvXrJx4/SNvwpB0ia525BVWdsK92HbIBqSa6S0Xnn/ZK60trV0oEFa5bTsKVcMKH8e+DyHTTIdZoEtUXBnCY9l3vUk0UV3CKSOvFBBm32EmJoxR+w6kSWaZ8aVIq4QRXsvC3RwTXaTTjkSElat4UTbCX7AwhwzpzEEcg4wRVgljuT4hXESm0sJb90GYli5pSSs5sAyFd2iXVsRROvSkvMO+hMDyEBJ2i9acIi70rVTwwgTh8SR8monNVTh2RWqgJ1XwJLbHMQm7Y7qYCt1LIKwQVnIgCU9CUkyYrl24q6gQVrjb+xMv1SazTJgF7U6qd9vkDuPBJDyaw5napMiuUU9LHwj6/P+3v4U9e/YgyiIyywn/xH/i7ykURQTS8z5po1rOnlN3QiAz7GWNQUkAEwyoWZywmkTCgyiilrmUwww9z996LKZ/CDIe96GRoBOU/BoqUsmBegjGGqBuaAirY8n4AXNuZt44WMJz3d5RWjpRT5PuA5VsYeQBGPLBSACGCE94NQnXNu7F6kteJrLHMn8D9n45powuvDZQkISRySJpY5STYFTjCat7SfgYRb3nbzsIsqLPxrFsvij7uC/yUARNSMJpP6Qxk4QyamkwHgqr88j4BmoVhRz4/mGnO5bbGyc031Br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\""],"sourceRoot":""}