{"version":3,"sources":["components/Navigation/NavLinkMui.js","components/NestedList.js","components/shared/FooterNav.js","components/shared/NavBar.js","utils/permissions.js","components/Layout.js","components/Navigation/NavItems.js","components/Dashboard.js","components/shared/MapBadge.js","utils/map.js","components/GoogleMaps/MapPolylines.js","components/shared/MapHelper.js","components/shared/SummaryInfo.js","utils/sorting.js","utils/organizations.js","components/shared/Views.js","components/shared/TableViewManagementDialog.js","components/shared/TableViewCreateDialog.js","components/shared/ShipmentsHelper.js","components/shared/ShipmentRoutingCard.js","components/DialogContainer.js","utils/exporting.js","components/shared/ClientSelector.js","components/shared/ScheduledReportsManagementDialog.js","components/shared/ShipmentImportDialog.js","components/BookingApprovalButton.js","components/BookingRejectButton.js","components/ShipmentsTable.js","components/shared/UnauthorizedMessage.js","components/Shipments.js","components/AccountingTable.js","components/Accounting.js","components/Booking.js","components/shared/ShipmentInfoCard.js","components/shared/DialogOk.js","components/shared/ShipmentDetailCard.js","components/shared/ShipmentContainersTable.js","components/shared/ShipmentPacklinesTable.js","components/shared/DocumentUploadSelectDialog.js","utils/dates.js","components/shared/TransactionCommentsCard.js","components/shared/TransactionCommentsHeaderCard.js","components/ShipmentDetailPage.js","components/BookingDetails.js","components/ShipmentDetails.js","components/Customs.js","components/CustomDetails.js","components/shared/Alert.js","components/shared/CustomDialog.js","components/CreateShipment/ShipmentCreationProgress.js","utils/data-mapping.js","utils/shipment.js","components/CreateShipment/CreateBookingFunctions.js","utils/numbers.js","components/CreateShipmentForm.js","components/CreateShipment.js","components/CreateShipment/CreateShipmentTable.js","components/CreateShipment/PackLinesInfo.js","components/CreateShipment/Containers.js","components/CreateShipment/Notes.js","components/shared/ShipmentNotesTable.js","components/shared/ShipmentContactCard.js","components/CreateShipment/Review.js","components/PackageLineInfo.js","components/CreateOrder/OrderCreationProgress.js","utils/order.js","components/CreateOrderForm.js","components/CreateOrder.js","components/CreateOrder/CreateOrderTable.js","components/CreateOrder/CreateOrderLines.js","components/CreateOrder/CreateOrderNotes.js","components/shared/OrderDetailCard.js","components/shared/CreateOrderDetailsCard.js","components/shared/OrderNotesTable.js","components/shared/CreateOrderLinesTable.js","components/CreateOrder/CreateOrderReview.js","components/AccountDetails.js","components/Password.js","components/shared/DialogConfirm.js","components/shared/ClientImportDialog.js","components/Clients.js","components/UserClients.js","components/shared/Helpers.js","components/ClientDetails.js","components/shared/UserImportDialog.js","components/ClientUsers.js","components/OrgUsers.js","components/OrganizationDetails.js","components/ClientUserDetails.js","components/AdminUsers.js","components/DataMapping/DataMappingIndex.js","components/DataMapping/DataMappingEdit.js","components/AdminUserDetails.js","utils/interactions.js","components/api-authorization/AuthorizeRoute.js","components/api-authorization/AdminAuthorizeRoute.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/shared/BookingOrdersConsolidation.js","components/OrdersTable.js","components/Orders.js","components/shared/OrderInfoCard.js","components/shared/OrderSupplierInfoCard.js","components/shared/OrderDeliveryInfoCard.js","components/shared/OrderShipmentDetailCard.js","components/shared/OrderPlanningCard.js","components/shared/PortAutocomplete.js","components/shared/OrderPlanningCardEdit.js","components/OrderDetailPage.js","components/OrderDetails.js","components/OrderLines.js","components/DeliveryTable.js","components/Delivery.js","components/PickupTable.js","components/Pickup.js","components/Reports.tsx","components/ReportDetails.js","components/DashboardsMore.js","components/DashboardDetails.js","components/ContainerTable.js","components/ContainerManagement.js","App.js","index.js","components/api-authorization/AuthorizeService.js","components/api-authorization/ApiAuthorizationConstants.js","api/api.js","components/shared/CardTitle.js","components/shared/TableHelper.js"],"names":["NavLinkMui","this","props","forwardedRef","ref","PureComponent","NestedList","state","handleClick","e","setState","getSelected","index","subindex","path","window","location","pathname","indexOf","items","classes","textColor","list","map","List","component","className","root","key","id","subheader","ListSubheader","title","item","selected","isExternal","external","undefined","targetProps","target","subitems","ListItem","button","hidden","style","color","onClick","bind","name","ListItemIcon","Icon","icon","ListItemText","primary","Collapse","in","timeout","unmountOnExit","disablePadding","sitem","href","link","to","React","Component","withStyles","theme","width","maxWidth","background","palette","main","nested","paddingLeft","spacing","FooterNav","Grid","container","xs","sm","md","Typography","align","gutterBottom","defaultProps","i","styles","select","backgroundColor","fill","selectMenu","NavBar","handleChange","event","organizations","value","subdomain","goBack","history","setInitialOrganization","found","organization","hostname","selectedIndex","renderTitle","isLoading","forwardSlashCount","match","length","renderOrgDropdown","Select","onChange","displayEmpty","inputProps","MenuItem","orgLogoURL","populateConfig","localStorage","getItem","fetch","ApplicationPaths","AppInfo","response","json","data","organizationLogoUrl","primarycolor","colorThemePrimaryRGB","themeTextColor","colorThemeTextRGB","logoutPath","LogOut","local","cursor","push","Card","borderRadius","CardActionArea","CardMedia","alt","image","src","tag","Link","disabled","logoutButtonTitle","withRouter","checkCustomPermission","array","customPermissions","filter","permission","propertyKey","extractCreateShipment","extractSearchShipment","extractSeeCustoms","extractSeeAccounting","extractSeeBooking","extractSeeContainers","extractSeeOrder","extractCreateOrder","canSeeCustoms","appInfoArray","authService","isSuperAdmin","isAdmin","modulePermissionArray","userModulePermissionArray","canSeeContainers","canSeeAccounting","canSeeBooking","canSeeOrders","canCreateOrder","canCreateShipment","canSearchShipment","clientUserHasPermission","clientId","permissionName","getAccessToken","token","headers","Authorization","ok","Layout","handleCloseBannerAlert","showBannerAlert","isAuthenticated","canShowCustoms","bannerInfo","_subscription","unsubscribe","subscribe","populateState","then","getAppInfo","document","organizationAppName","getOrganizations","showBanner","bannerText","bannerBackgroundColor","bannerTextColor","bannerTitle","setItem","zoomLevel","Promise","all","Organizations","customLinkUrl","organizationCustomLinkUrl","customLinkName","organizationCustomLinkName","customLink2Url","organizationCustomLink2Url","customLink2Name","organizationCustomLink2Name","customLink3Url","organizationCustomLink3Url","customLink3Name","organizationCustomLink3Name","customLink4Url","organizationCustomLink4Url","customLink4Name","organizationCustomLink4Name","customLink5Url","organizationCustomLink5Url","customLink5Name","organizationCustomLink5Name","authenticated","reportPath","Reports","dashboardPath","DefaultLoginRedirectPath","shipmentsPath","Shipments","CreateShipment","Delivery","Pickup","Container","customsPath","Customs","accountingPath","Accounting","bookingsPath","Bookings","ordersPath","Orders","createOrder","CreateOrder","orderLinesPath","OrderLines","customLinkPath","customLink2Path","customLink3Path","customLink4Path","customLink5Path","clientsPath","Clients","usersPath","OrgUsers","dataMappingPath","DataMappingIndex","organizationsPath","accountPath","Account","adminUsersPath","AdminUsers","Image","idReference","navItems","colorThemeRGB","customTheme","colorThemeSecondaryRGB","colorThemeTertiaryRGB","createTheme","overrides","MUIDataTableToolbar","actions","display","flex","order","MUIDataTableHeadCell","fixedHeaderCommon","MuiDrawer","paper","borderRight","contrastText","secondary","border","default","zIndex","drawer","height","textFieldForm","content","minHeight","config","standardLayoutPreset","headerStyles","sidebarStyles","CssBaseline","float","Alert","onClose","variant","children","collapsed","transition","useStyles","makeStyles","minWidth","dashboardTile","Dashboard","useState","dashboardsList","setDashboardlist","setIndexValue","dashboardId","setDashboardId","setDashboardName","embedUrl","setEmbedUrl","accessToken","setAccessToken","displayDashboards","setDisplayDashboards","setIsLoading","showCustoms","setShowCustoms","showAccounting","setShowAccounting","showBooking","setShowBooking","showShipments","setShowShipments","showOrders","setShowOrders","showCreateOrder","setShowCreateOrder","showContainers","setShowContainers","setcolorThemePirmaryRGB","setcolorThemeSecondaryRGB","setcolorThemeTertiaryRGB","setcolorThemeRGB","setcolorThemeTextRGB","useHistory","useEffect","populateDashboardsData","colorThemePirmaryRGB","getUser","user","userId","sub","populateDashboardData","groupId","handleDashboardChange","dashboard","find","goToSection","Id","GroupId","UserId","method","Accept","body","JSON","stringify","d","dashboardName","dashboardContainer","getElementById","powerbi","pbi","Service","hpmFactory","wpmpFactory","routerFactory","reset","embedConfig","type","tokenType","models","TokenType","Embed","pageView","settings","panes","filters","expanded","visible","BackgroundType","Transparent","embed","catch","error","class","direction","xxl","xl","lg","CardContent","marginRight","FormControl","label","marginTop","eventHandlers","Map","console","log","detail","cssClassName","getEmbeddedComponent","embeddedDash","margin","MapBadge","Badge","badgeContent","checkValidPosition","position","isNaN","lat","lng","MapPolylines","renderPolyline","uniqueRoutes","getLatLng","bounds","google","maps","LatLngBounds","daMap","useGoogleMap","geoLocationOrigin","geoLocationDestination","originCenter","destinationCenter","extend","LatLng","isEmpty","fitBounds","listener","addListener","getZoom","setZoom","removeListener","shipmentNumber","polylineLineSymbol","strokeOpacity","scale","getPixelPositionOffset","x","y","getPortOverlay","port","mapPaneName","OverlayView","OVERLAY_MOUSE_TARGET","getCurrentLocationOverlay","getVesselCurrentLocationIcon","getBulkPortMarkers","uniquePorts","positionObj","positionString","split","parseFloat","getLatLngFromString","renderMarker","portName","renderMap","uniqueItems","locCode","self","findIndex","t","forEach","p","originPortCode","origin","destinationPortCode","destination","googleMapsApiKey","mapContainerStyle","zoom","options","streetViewControl","onLoad","getMapOverlay","renderDetailMapInner","itemIndex","itemextra","currLoc","portOfLoading","portOfDischarge","renderMarkers","renderDetailMap","source","shipment","shipmentExtra","currentLocation","trackedArray","originToTrackedArray","trackedToDestinationArray","vesselCoordinates","reverse","fillColor","fillOpacity","strokeColor","geodesic","icons","offset","repeat","loadPort","dischargePort","locationGeoCoordinates","getIconForShipment","shipmentMode","transportMode","mode","sx","alignItems","avatar","white","SummaryInfo","isClicked","rest","cardId","cardTitleId","cardValueId","countUpEnd","replace","countUpDecimals","substring","countUpPrefix","clsx","justify","start","end","duration","separator","decimals","prefix","sortData","column","a","b","sortField","field","Date","Number","parseInt","localeCompare","getOrgViewCodeFromOrganization","retrieveView","viewCode","retrievePageFields","pageCode","retrieveViewDefinitions","fetchURL","getClientViewsList","deleteView","view","handleSuccess","handleError","isUserView","postDataObj","clientViewId","viewId","text","errorMessage","createView","viewName","isOrgview","isOrgView","updateUserViewAssignment","assignView","saveViewColumns","columnDefinitions","stringColumnDefs","btoa","apiURL","getViewCodeBySearchItem","searchItem","getViewNameBySearchItem","not","intersection","flexWrap","formControl","docTypeSelect","editColumnTextField","TableViewManagementDialog","open","setOpen","isSuccess","setIsSuccess","successMessage","setSuccessMessage","isCreateSuccess","setIsCreateSuccess","isError","setIsError","creatingView","setCreatingView","isCreateViewError","setIsCreateViewError","setErrorMessage","createViewErrorMessage","setCreateViewErrorMessage","setTableView","hiddenColumns","setHiddenColumns","visibleColumns","setVisibleColumns","selectedColumn","setSelectedColumn","changesMade","setChangesMade","adminUser","setAdminUser","superAdminUser","setSuperAdminUser","isViewManager","setIsViewManager","checked","setChecked","selectedView","setSelectedView","allViews","setAllViews","promptForViewName","setPromptForViewName","editColumnDialogOpen","setEditColumnDialogOpen","addColumnDialog","setAddColumnDialog","appliedViewId","setAppliedViewId","userIsAdmin","userIsSuperAdmin","fetchIsAdmin","userHasPermission","fetchViewManager","fontColor","loadColumnHeaders","viewData","columnHeaders","columnDefinitionsArray","fetchTableViews","currentUserView","currentViewById","currentViewByClientViewId","handleViewNameClose","handleViewNameSave","alert","handleCreateViewSuccess","handleCreateViewError","handleAddColumn","newColumn","handleDrop","droppedItem","updatedList","splice","reorderedItem","handleCustomizeClickOpen","handleClose","confirm","setInterval","successCallback","handleDeleteError","handleDeleteSuccess","handleSave","handleSubmission","handleAssignUnassignView","allColumns","handleEditColumnDialogClose","handleEditColumnDialogSubmission","columnTitle","columnValue","columnType","columnSortField","updatedVisibleColumns","updatedHiddenColumns","handleDelete","handleReset","leftChecked","rightChecked","numberOfChecked","handleToggleAll","customList","CardHeader","fontWeight","px","py","Checkbox","indeterminate","Divider","onDragEnd","droppableId","provided","droppableProps","innerRef","bgcolor","overflow","dense","role","labelId","draggableId","dragHandleProps","draggableProps","currentIndex","newChecked","tabIndex","disableRipple","ListItemSecondaryAction","IconButton","edge","aria-label","handleDeleteColumn","placeholder","disableFocusRipple","Dialog","fullWidth","DialogTitle","textAlign","DialogContent","LinearProgress","justifyContent","my","size","leftCheckedUpdated","concat","rightCheckedUpdated","ThemeProvider","DialogActions","InputLabel","handleViewSelectChange","isCurrentView","weight","severity","action","fontSize","TextField","autoFocus","InputLabelProps","shrink","defaultValue","TableViewCreateDialog","setIsOrgView","fetchIsViewManager","handleCreateViewClose","handleCreateViewSave","handleCreateClickOpen","getContainerExtraData","shipmentData","containerNumber","queryString","require","qs","ClientId","ShipmentSearchNumber","shipmentExtraResponse","containers","c","routingInfo","geoLocationPortOfLoading","geoLocationPortOfDischarge","geoLocationCurrentLocation","ShipmentRoutingCard","routingColumns","setRoutingColumns","getRoutingColumns","routingColumnData","CardTitle","checkOn","renderTable","maxHeight","milestones","DialogContainer","dialogContainerHeaders","setDialogContainerHeaders","containerOrderLines","setContainerOrderLines","productsLoading","setProductsLoading","packedItemHeaders","setPackedItemHeaders","orgViewCode","setOrgViewCode","client","showDialog","dialogCallback","getContainerDialogContainerHeaders","getContainerPackedItemHeaders","getOrgViewCode","getContainerOrderLines","handleContainerOrderLinesSuccess","handleContainerOrderLineFailure","packedItems","containerHeaders","header","containerTrackingURL","renderContainerLink","arrayKey","Button","newWindow","opener","isOpenTrack","fullScreen","disableTypography","renderDetails","filteredPackedItemHeaders","renderPackedItems","sortedMilestones","consolMilestones","sort","sequence","renderMilestones","prepareCsvExport","columns","exportFileName","col","filename","csv","Papa","unparse","blob","Blob","url","URL","createObjectURL","createElement","setAttribute","visibility","appendChild","click","removeChild","exportCsv","row","moment","format","exportDateFormat","newKeyObject","ClientSelector","clients","selectedClientIds","handleClientSelection","isClientMultiSelect","dialogOpen","setDialogOpen","filteredClients","setFilteredClients","multiSelect","setMultiSelect","clientsCopy","includes","startIcon","DialogContentText","toLowerCase","whiteSpace","handleClientSelectChange","checkedClients","dateToLocalString","date","dateFns","utc","dialog","marginBottom","editReportTextField","toggleGroup","dark","sectionTitle","gridContainer","formLabel","dateNote","DateFnsUtils","ScheduledReportsManagementDialog","selectedReport","setSelectedReport","allReports","setAllReports","editDialogOpen","setEditDialogOpen","isNewReport","setIsNewReport","nameInputHelperText","setNameInputHelperText","nameInputError","setInputNameError","emailInputHelperText","setEmailInputHelperText","emailInputError","setEmailInputError","setClients","setSelectedClientIds","setMode","gridSearchTypes","setGridSearchTypes","referenceType","setReferenceType","itemReference","setItemReference","dateView","setDateView","dateFiltering","setDateFiltering","selectedDate","setSelectedDate","startOf","fromDate","setFromDate","endOf","toDate","setToDate","handleScheduledReportsClickOpen","newReportData","reportSearchTypes","searchType","reportDateOptions","fetchScheduledReports","fetchData","getScheduledReports","relatedModule","fetchedReports","closeDialog","handleEditReportDialogClose","handleDeleteReport","deleteScheduledReport","getUTCDateTime","hour","setHours","decodeParameters","base64Str","parse","decoded","atob","encodeParameters","paramsObj","jsonStr","handleEditReportDialogSubmission","emailAddress","emailRegex","emailAddresses","test","trim","currentParams","reportQueryString","parameters","updatedParams","Mode","ReferenceType","OrderSearchNumber","DateType","SelectedDate","FromDate","ToDate","FromDateAsDate","ToDateAsDate","newReport","Name","JobType","RelatedModule","Frequency","frequency","NextRunDate","nextRunDate","nextRunTime","IsActive","isActive","EmailAddress","ReportQueryString","FromDateType","fromDateType","ToDateType","toDateType","createScheduledReport","updatedReport","EncodedParameters","updateScheduledReport","message","clientIds","handleReportSelection","reportParameters","editReport","report","setDatesFromDateDropdown","from","add","subtract","reportsTableTheme","render","rowData","cellStyle","headerStyle","lastRunDate","createdDate","modifiedDate","search","paging","sorting","showTitle","toolbar","components","renderReportList","overflowY","overflowX","dropdownName","searchTypeDescription","labelid","prevReport","option","FormHelperText","utils","autoOk","pickerDateFormat","formattedDate","ToggleButtonGroup","exclusive","_","ToggleButton","minDate","required","helperText","KeyboardButtonProps","menuItems","getSelectStartHourMenuItems","htmlFor","renderReportEditDialog","ShipmentImportDialog","selectedFile","setSelectedFile","isSelected","setIsSelected","parsedData","setParsedData","importProfile","setImportProfile","wrapper","buttonSuccess","green","fabProgress","top","left","buttonProgress","marginLeft","mapRowData","rows","fields","newRow","handleImportShipments","specificRow","rowIndex","importShipments","missingFields","join","importing","jsonPayload","importResponse","result","resultIndex","imported","importResult","importError","importResultMessage","importLog","importedShipmentNumber","Tooltip","dividers","csvData","revokeObjectURL","remove","TableContainer","Paper","Table","TableHead","TableRow","TableCell","red","TableBody","fieldIndex","CircularProgress","files","reader","FileReader","onload","mergedData","existingRow","r","houseBillNumber","importContainers","containerType","ImportContainers","readAsText","accept","lastModifiedDate","toLocaleDateString","BookingApprovalButton","booking","selectedRows","modalOpen","setModalOpen","setTransportMode","selectedBookings","setSelectedBookings","handleModalClose","handleConfirmApprove","BookingNumbers","TransportMode","Consignee","consignee","Destination","Error","reload","stopPropagation","bookingNumbers","buttonTitle","BookingRejectButton","handleRejectBooking","bookingNumbersToReject","responseObj","ShipmentsTable","getOrgHeaderColumns","orgHeaderColumns","userViewId","handleContainerNumberClick","searching","selectedContainer","selectedShipment","showContainerDialog","setContainerDialogState","getModuleBySearchItem","handleNewScheduledReport","module","clientName","referenceTypeDescription","gst","dateRange","df","getQueryString","showScheduledReports","saveShipmentFilterValuesToState","tableRef","newColumnFilters","current","filterValue","tableData","localforage","shipmentFilters","validSearchParameters","itemReferenceError","itemReferenceErrorMessage","getURLForItem","itemvalue","rowClientId","pathClientId","initialPath","handleSubmit","populateTableData","handleClearAll","Object","entries","removeItem","lfKeys","keys","err","lfKey","selectedDateHelperText","nwDate","nmDate","nyDate","lwDate","lmDate","lyDate","handleChangeValue","elem","getDateObject","time","substract","base","From","To","getDates","renderToolTipOrderRef","orderRefValue","orderRef","placement","renderToolTipAddress","delAddressValue","delAddress","renderNavLinkOrderRef","orderClientId","orderClients","orderRefs","orderReferenceNumber","refnum","orders","orderNumber","orderNumberSplit","renderShipmentsTable","primaryColor","canSeeScheduledReports","canImportShipments","clientUserCanImportShipments","tableTheme","currentClient","tableViewCode","tableViewName","cachedHeaderKeyValue","clientview","clientviewId","mappedItems","savedColumns","headcell","removable","hiddenByColumnsButton","customTitle","customSort","defaultFilter","getFilter","params","deliveryAddress","bookingApproved","parIndex","shipmentFlagged","tableActions","tooltip","toggleRecordFlagged","selectedRowsRef","editCopyBooking","isFreeAction","columnData","SortArrow","forwardRef","onSelectionChange","filterRowStyle","filtering","maxBodyHeight","pageSizeOptions","pageSize","searchFieldAlignment","columnsButton","doubleHorizontalScroll","draggable","showFirstLastPageButtons","tableLayout","padding","selection","pagination","rowsPerPage","displayRows","exportButton","exportAllData","rowStyle","now","onColumnDragged","sourceIndex","destinationIndex","sourceColumn","onChangeColumnHidden","renderSummary","resultsBox1Value","resultsBox1Title","resultsBox2Value","resultsBox2Title","resultsBox3Value","resultsBox3Title","resultsBox4Value","resultsBox4Title","resultsBox5Value","resultsBox5Title","resultsBox6Value","resultsBox6Title","currentSummaryTile","handleSummaryTileClick","tileName","tileId","newShipmentList","status","shipmentList","initialLoad","originUNLOCOCodeObject","originCountryCodeObject","originName","destinationUNLOCOCodeObject","destinationCountryCodeObject","destinationName","unloco","countryName","toISOString","createRef","todayDate","loading","page","orderBy","lastCompletedMilestone","titleIcon","itemKey","originUnlocoCodes","originCountryCodes","destinationUnlocoCodes","destinationCountryCodes","downloadCSVDisabled","displayAdvancedSearchProperties","updatingApprovalMode","secondaryColor","selectedClientId","setClientsWithOrderAccess","populateClientsData","referredFromDetailPage","fetchGridSearchTypes","initSearch","setClientUserPermissions","loadAndSetFromLocalForageNoKey","loadAndSetFromLocalStorage","loadAndSetFromLocalForage","keyName","jsonParse","localStorageKey","localForageKey","contents","space","textField","cachedClientId","cachedClientIds","runClientDependentFunctions","scheduledReportsAccess","featureAccessParameters","fap","featureCode","clientMultiSelect","shipmentImporting","enabled","dateFilterTypeArray","itemKeyUpper","toUpperCase","FlaggedValue","ShipmentNumber","Module","rawResponse","responseText","useQuickSearch","shipments","wrap","UnauthorizedMessage","moduleName","loadingShow","setLoadingShow","showSearchShipment","setShowSearchShipment","AccountingTable","accountingOrgView","invoiceData","handleRequestSort","property","isAsc","handleChangePage","handleChangeRowsPerPage","labeledInvoice","handleDownloadCSV","downloadInvoicesCSV","parentNode","paymentStatus","transactionType","Fragment","renderAccountingTable","headCells","handleDownloadInvoicePDF","aH_TransactionNum","toLocaleString","invoiceNumber","downloadInvoicePDF","get","newFilename","slice","invoiceList","invoiceStage","resultsBox7Value","resultsBox7Title","resultsBox8Value","resultsBox8Title","isDueDateView","dateFromLabel","dateToLabel","dateFromKey","dateToKey","ageNotDue","ageCurrent","age30_45","age46_60","age60_90","age90","totalInvoiceAmount","totalOutstandingAmount","isDate","postDateTo","orderClient","invoices","show","setShow","Booking","ShipmentInfoCard","showFirstRow","etd","eta","atd","ata","shipper","requestedDelivery","requiredPickup","showRequestedDelivery","showRequiredPickup","showRequiredETD","showRequiredETA","cargoReadyDate","transactiontype","useTheme","bgColorSection","shipmentIncoTerm","serviceLevel","masterBillNumber","packingMode","DialogOk","aria-labelledby","aria-describedby","callback","ShipmentDetailCard","shippersRefLabel","shippersRef","ownerRef","volumeLabel","quantity","volume","showShippersRef","showOwnersRef","pageFields","setPageFields","hasChanges","setHasChanges","ownersReference","customsNumber","updatedShipment","setUpdatedShipment","updateAlert","setUpdateAlert","updatingShipment","setUpdatingShipment","originalOwnerRef","handleUpdateShipmentSuccess","handleUpdateShipmentError","shipmentServiceSelected","requiredField","pageField","editable","editField","goodsDescription","updateShipment","defaultContainers","normanHKContainers","containersReview","ShipmentContainersTable","isReview","currentContainer","setCurrentContainer","containersList","setContainersList","handleContainerDialogState","isOpenTrackTracking","openTrackButtonTitle","ShipmentPacklinesTable","productDialogOpen","setProductDialogOpen","renderAllProductsDialog","productCodesArray","packLines","DocumentUploadSelectDialog","doctype","setDocType","docTypes","setDocTypes","setIsAdmin","canUpload","setCanUpload","admin","superAdmin","getIsAdmin","getUploadPermission","transactionNumber","transactionnumber","fetchDocTypes","useCallback","getTransactionTypeByName","formData","FormData","append","encodeURIComponent","buyercode","transportmode","docData","TransactionNumber","TransactionType","DownloadAll","downloadDocumentPDFForShipment","sanitize","input","Input","documentType","documentDescription","fileSizeLimit","cargowiseEDocSizeLimit","dateUTCToLocalString","inline","TransactionCommentsCard","transactionComments","comm","avatarText","userFirstName","charAt","userLastName","ListItemAvatar","Avatar","comment","readOnly","TransactionCommentsHeaderCard","newComment","setNewComment","requestBody","multiline","minRows","ShipmentDocumentsCard","lazy","referenceNumbers","notes","ShipmentDetailPage","handleActionsDialog","handleACCChange","panel","renderInvoiceLink","showInvoices","downloadInvoicePDFForShipment","shipmentMilestones","renderReferenceNumbers","renderNotes","renderInvoices","renderPickupInfo","pickupInfo","addresLine1","city","postalCode","country","hidePickupRequiredBy","pickupRequiredBy","estimatedPickup","actualPickup","renderDeliveryInfo","deliveryInfo","shortCode","hideDeliveryRequiredBy","deliveryRequiredBy","estimatedDelivery","actualDelivery","shipmentId","containerId","uri","populateShipmentData","fetchAllShipmentData","fetchExtraShipmentData","prevState","assign","renderActionButtons","originCity","destinationCity","customizedFields","shippersReferenceNumber","hideRoutingInfo","ExpansionPanel","square","ExpansionPanelSummary","expandIcon","ExpansionPanelDetails","getTransactionTypeByURI","shipmentnotes","comments","fallback","itemuri","orgConfig","clientData","shipmentResponse","orgConfigResponse","clientDataResponse","withTheme","BookingDetails","ShipmentDetails","CustomDetails","AlertMessage","success","CustomDialog","isOpen","subtitle","ShipmentCreationProgress","hideContainers","clientBookingSteps","bookingSteps","renderStepButton","step","renderStep","dataTypesKey","setDataMapping","sessionStorage","isNotFclOrFtl","getShipmentKey","getNextEnabledBookingStep","currentStep","nextStep","getPreviousEnabledBookingStep","previousStep","hasAccessToStep","tryParseInt","retValue","tryParseFloat","heading","CreateShipmentForm","useForm","register","errors","formState","setValue","getValues","control","watch","isDirty","setOrganization","setCurrentClient","transportModes","setTransportModes","incoTerms","setIncoTerms","commodities","setCommodities","containerModes","setContainerModes","serviceLevels","setServiceLevels","pieceUnits","setPieceUnits","weightUnits","setWeightUnits","volumeUnits","setVolumeUnits","addresses","setAddresses","filteredAddresses","setFilteredAddresses","orgConsigneeAddresses","setOrgConsigneeAddresses","filteredOrgConsigneeAddresses","setFilteredOrgConsigneeAddresses","orgConsignorAddresses","setOrgConsignorAddresses","filteredOrgConsignorAddresses","setFilteredOrgConsignorAddresses","isConsignor","setIsConsignor","setOriginUnlocoCodes","setDestinationUnlocoCodes","setFilteredContainerModes","didSetOriginUnlocoCode","setDidSetOriginUnlocoCode","didSetDestinationUnlocoCode","setDidSetDestinationUnlocoCode","setOriginUNLOCOCodeObject","setDestinationUNLOCOCodeObject","consignorAddressesModalOpen","setConsignorAddressesModalOpen","consigneeAddressesModalOpen","setConsigneeAddressesModalOpen","organizationId","setOrganizationId","bookingAlert","setBookingAlert","referredOrderAlert","setReferredOrderAlert","setcolorThemePrimaryRGB","setretrievingDataReferred","expandedPanels","setExpandedPanels","bookingOrders","setBookingOrders","linkedOrderHeaderColumns","setLinkedOrderHeaderColumns","setPageTitle","setShipmentNumber","editCopyBookingNumber","setEditCopyBookingNumber","setRetrievingCW1Booking","consolidatedOrderList","setConsolidatedOrderList","controllingCustomerCode","setControllingCustomerCode","selectedAddressForeignKey","setselectedAddressForeignKey","watchTransportMode","isReadOnly","setIsReadOnly","isSubmitting","setIsSubmitting","getClients","setLinkedOrderColumnDefinitions","shipmentIdKey","editCopyBookingClientId","getCreatedShipment","cW1BookingNumber","bookingNumber","originUNLOCOCode","getLocationByUNLOCO","codeArray","destinationUNLOCOCode","clientReferenceNumber","transportModeCode","incoTermsCode","commodityCode","containerTypeCode","serviceLevelCode","piecesCount","piecesUOM","weightUOM","volumeUOM","requiredETD","requiredETA","linkedOrders","linkedOrderHeaders","consignors","contacts","addressType","consignees","getTypesData","buyerCode","clientCompanyCode","consolidatedOrderData","clearReferredOrderValues","integrationCompanyCode","fetchAllOrderData","fetchedOrderData","orderClientIsConsignor","supplierCode","setClientAddresses","searchAddresses","searchedAddresses","consigneeAddress","orgCode","psaClientBuyerSupplierFK","consignorAddress","orderTransportMode","containerMode","packs","packType","dateDepartEst","dateArriveEst","dateDeliveredEst","orderNumbersArray","setBookingDetailsFromOrder","hasLockOrdertoBookingFieldsPermission","wasOpenedViaOrder","checkLockOrderPermission","handleBeforeUnload","preventDefault","returnValue","addEventListener","removeEventListener","fieldPanelMapping","setDataTypes","values1","propertyType","isAvailable","defaultTransportMode","isDefault","values2","defaultIncoTerms","values3","defaultCommodity","values4","defaultContainerMode","values5","defaultServiceLevel","values6","defaultPiecesUOM","values7","defaultWeightUOM","values8","defaultVolumeUOM","updateAddressInfoFromSelection","sourceParty","portCode","addressLine1","countryCode","zipCode","renderInput","customKey","customSubKey","rules","validate","onBlur","renderDateSelectorsDefault","currentorg","renderDatePicker","getCargoReadyDate","renderDateSelectors931","setKey","clearKey","contactAddressLine1","contactAddressCity","contactAddressRegion","contactAddressCountryCode","contactAddressZipCode","handleSelectChange","renderSelect","keyValue","valueKey","showKeyInValue","renderAutocomplete","passedValue","selectChangeCallback","textChangeCallback","Autocomplete","getOptionSelected","unLoco","getOptionLabel","InputProps","renderUnitSection","selectKey","cKey","voca","capitalize","psaOrganizationId","parsedColumns","searchUNLOCO","query","isOrigin","isName","getUNLOCO","isShipper","isPrimary","fromShipper","selectedPartyForeignKey","sourcePK","saveShipmentData","nextBookingStep","newData","setTimeout","handleModalOpen","OrderSearchNumberSplit","orderResponse","results","onSubmit","consignor","contactsAreEqual","preparedData","clone","omitBy","isNil","newConsignor","newConsignee","prepareData","panels","f","noValidate","autoComplete","Accordion","AccordionSummary","AccordionDetails","newValue","FormControlLabel","onFocus","maxLength","renderDateSelectors","address","updateAddressInfo","filteredConsigneeAddresses","filteredConsignorAddresses","table","emptyRow","foo","CreateShipmentTable","setShipment","lengthUnits","setLengthUnits","noteUnits","setNoteUnits","orderLineColumnHeaders","setOrderLineColumnHeaders","setRows","setAlert","shipmentKey","note","noteTypeCode","noteText","setLinkedOrderLineColumnDefinitions","idx","updateValueInRow","createShipmentId","parseRowData","floats","keyIn","sourceForm","redirectURL","renderItem","renderInputCell","unique","previousRows","uniqueValues","some","renderSelectCell","dataKey","flatMap","updatedRows","backURL","submit","showSkip","submitButtonText","orderNumbers","reduce","acc","curr","summedVolume","summedWeight","summedQuantity","referenceNumber","toFixed","quantityUOM","outerPacksType","addPackLineFromLinkedOrderLines","linkedOrderLines","renderLinkedOrderLines","PackLinesInfo","submitText","setSubmitText","setClient","setNextBookingStep","previousBookingStep","setPreviousBookingStep","getClientData","Containers","Notes","notesReview","ShipmentNotesTable","ShipmentContactCard","Review","submitSuccess","setSubmitSuccess","createdShipment","setCreatedShipment","dialogMessage","setDialogMessage","isUpdating","setIsUpdating","getFormattedDate","dateFormat","submitType","packline","shipmentCreated","organizationName","showField","parseShipmentDetailData","contact","getShipperName","getConsigeeName","PackageLineInfo","handleAddRow","handleRemoveSpecificRow","renderAlert","handleCloseAlert","steps","OrderCreationProgress","hideIndexes","getOrderKey","removeOrderKey","CreateOrderForm","setHasAccess","templateLoading","setTemplateLoading","currencyCodes","setCurrencyCodes","loadPorts","setLoadUnlocoCodes","dischargePorts","setDischargeUnlocoCodes","didSetLoadPort","setDidSetLoadPortUnlocoCode","didSetDischargePort","setDidSetDischargePortUnlocoCode","loadPortObject","setLoadPortUNLOCOCodeObject","dischargePortObject","setDischargePortUNLOCOCodeObject","setDidLoadOrder","orderAlert","setOrderAlert","templateDialogAlert","setTemplateDialogAlert","addressSearchValue","setAddressSearchValue","orderNumberLabel","setOrderNumberLabel","templates","setTemplates","templateModalOpen","setTemplateModalOpen","filteredTemplates","setFilteredTemplates","orderId","orderIdKey","loadOrder","getOrderTemplates","loadOrderData","currencyCode","orderDate","exWorksRequiredBy","estimatedDeparture","estimatedArrival","estimatedExFactory","estimatedOriginReceipt","getCreatedOrder","loadTemplate","getCreateOrderTemplate","defaultIncoTerm","currencyCodesArray","defaultCurrencyCode","fieldPattern","pattern","loadOrderFromTemplate","template","labelRender","handleDeleteTemplateClick","portType","addressSearchFilterList","saveOrderData","as","newPanels","addressSearchOnChange","templateName","templateSearchOnChange","CreateOrderTable","setOrder","dataTypes","orderKey","CreateOrderLines","setRedirectURL","setShowSkip","CreateOrderNotes","OrderDetailCard","shipmentdetails","weightAsString","volumeAsString","CreateOrderDetailsCard","OrderNotesTable","CreateOrderlinesTable","lines","CreateOrderReview","setBackURL","createdOrder","setCreatedOrder","saveOrderTemplate","prompt","isTemplate","orderCreated","passwordPath","Password","AccountDetails","updateUserField","companyCode","handleCheckboxChange","isValidForm","updateUserAccount","orgValue","adornment","valid","errorText","endAdornment","InputAdornment","isPosting","isValidUserFirstName","errorTextUserFirstName","isValidUserLastName","errorTextUserLastName","demoMode","companyList","searchShipment","onSearch","getUserAccountData","_asyncRequest","cancel","isRequired","alerts","showSuccess","showFail","isValidField","msgError","showChangePassword","companyCodeArray","company","errText","handleMouseDown","handleClickShowPassword","incoming","password","currentPassword","newPassword","UpdatePassword","obj","isValid","onMouseDown","Visibility","VisibilityOff","saved","minLen","minNumbers","hasMinLen","hasMinNumber","hasNumber","hasLowercase","hasUppercase","confirmPassword","isValidCurrentPassword","errorTextConfirmPassword","DialogConfirm","ClientUploadDialog","Users","publishClientIdsToCargoWise","isAlertSuccess","showAlert","alertMessage","getHeaderColumns","headerColumns","deleteClient","handleUserSelectChange","users","setAllUsersUnchecked","setUsersCheckedValue","setAllUsersChecked","filteredUsers","selectedClients","customerCode","notifyError","errMessage","showSuccessAlert","canImportClients","canPublishClientIds","addUsersDialogOpen","loadingClientUsers","isAddUsersSuccess","isAddUsersError","addUsersResult","addingUsers","_client","email","firstName","lastName","populateOrgUsersData","tableColumnHeaders","userCount","clientUserCount","getModuleNameByKey","renderAddUsersToClientDialog","isChecked","selectedUsers","getUserEmailNameString","saveClientUserDetails","isConsignee","clientUsersResponse","res","resolve","reject","displayName","h2","UserClients","deleteArrayIndexes","notificationAlert","dataset","clientsArray","clientToAdd","contactFirstName","contactLastName","populateDataToDisplay","viewColumns","print","download","selectableRowsOnClick","selectableRows","caseSensitive","rowsPerPageOptions","filterType","responsive","searchOpen","customToolbarSelect","dataIndex","customBodyRender","tableMeta","updateValue","elevation","removeClientUserLinks","clientsResponse","userResponse","phoneNumberValidation","emailValidation","ClientDetails","showPassword","updateClientField","handleBookingStepChange","updatedSteps","s","handleModuleChange","permissions","handleReportChange","reportAccessList","reports","reportId","dashboardAccessList","dashboards","handleValidation","isNew","saveClientData","renderSetUsersModuleAccessButton","handleSetUserModuleAccess","requiredFields","displayNoReports","displayNoDashboards","integrationPassword","isValidCustomerCode","errorTextCustomerCode","isValidName","errorTextName","isValidContactFirstName","errorTextContactFirstName","isValidContactLastName","errorTextContactLastName","isValidContactEmail","errorTextContactEmail","isValidContactPhoneNumber","errorTextContactPhoneNumber","isValidContactCountryCode","errorTextContactCountryCode","isValidCW1CompanyCode","errorTextCW1CompanyCode","isValidCW1BranchCode","errorTextCW1BranchCode","appInfo","clientViews","fetchClientViews","fetchClientData","getClientReportsData","getClientDashboardsData","copy","showFailAlert","isUpdatedClient","currentState","views","canEditCreateShipment","canEditSearchShipment","canEditSeeCustoms","canEditSeeAccounting","canEditSeeBookings","canEditSeeOrders","canEditSeeContainers","canEditCreateOrder","teritorycolor","reportName","handleCancel","ReportID","ReportName","DashboardID","DashboardName","Dashboards","_method","saveClientReportsData","saveClientDashboardsData","textFieldFormFullWidth","UserUploadDialog","clientid","queryParams","clientUserPath","ClientUsers","deleteClientUser","canImportUsers","showDeleteDialog","sendEmailConfirmEmail","populateClientUsersData","UsersArray","usersArray","psaorganizationid","emailConfirmed","lastLoginDateString","lastLoginAsString","lastLogin","lastActivityDateString","lastActivityAsString","lastActivity","_user","userid","dataToDisplay","customToolbar","disableElevation","hideRowNotify","setAllClientsUnchecked","setClientsCheckedValue","setAllClientsChecked","downloadCSV","selectedUserIds","userClients","newClientCount","userClientIds","headCell","clientCount","deleteClientUsers","alignClientUserModuleAccess","clientUsers","userIds","clientSelectDialogButton","shipmentServiceOptions","nextSyncDateOptions","OrganizationDetails","handleSyncRefreshClick","syncStatusRefreshing","populateOrganizationData","updateOrganizationField","updateOrganizationSyncConfigField","newMinSyncDate","syncConfig","updateOrganizationField2","groupdata","handleSyncConfigChange","updateState","minimumSyncDate","newSyncFromDateLocal","newSyncFromDate","currentSyncConfigId","syncFromDateSelectorOpen","isBefore","orgModuleSyncConfigs","syncId","updatedConfig","updLogo","updData","eAdaptorPassword","file","updateOrganizationData","updateOrganizationBIGroupData","saveOrgReportsData","saveOrgDashboardsData","syncConfigsUpdate","syncInterval","nextSyncFromDate","updateModuleSyncConfigs","renderInput2","handleChange2","renderColorSelector","renderHeaderTextColorSelector","renderPrimaryColorSelector","renderSecondaryColorSelector","renderTertiaryColorSelector","renderHeroFontColorSelector","loginPageHeroTextColor","renderHeroBackgroundColorSelector","loginPageHeroBackgroundColor","renderBannerBackgroundColorSelector","renderBannerTextColorSelector","renderShipmentServiceSelector","foundIndex","shipmentService","renderZoomLevelSelector","handleSyncFromDateSelectorClose","setOrgDateFormatFromOptions","dateFormatOptions","dateFormatOption","dateFormatId","orgDateFormat","renderDateFormatSelector","description","handleNewClientSyncSchedule","settingNewClientSync","setCustomSyncFromDate","utcDate","watermarkDate","handleSyncFromDialogClose","syncFromDialogOpen","handleSyncFromDialogOpen","renderSyncFromDateSelector","orgId","isValidOrgName","errorTextOrgName","isValidOrgAppName","isValidOrgLinkName","isValidOrgLinkUrl","isValidOrgLink2Name","isValidOrgLink2Url","isValidOrgLink3Name","isValidOrgLink3Url","isValidOrgLink4Name","isValidOrgLink4Url","isValidOrgLink5Name","isValidOrgLink5Url","isValidBannerText","errorTextOrgAppName","errorTextLinkName","errorTextLinkUrl","errorTextLink2Name","errorTextLink2Url","errorTextLink3Name","errorTextLink3Url","errorTextLink4Name","errorTextLink4Url","errorTextLink5Name","errorTextLink5Url","errorTextEmail","errorTextSubDomain","errorTextPhone","errorTextBannerText","isValidSubDomain","isValidEmail","isValidPhone","isValidStreet","errorTextStreet","openSyncHistoryView","syncHistoryData","handleOrgSyncConfigChange","populateDateFormatOptions","changePreviewLogo","refs","readAsArrayBuffer","onloadend","webkitURL","blobURL","handleSyncHistoryViewClickOpen","rowClickedData","getSyncHistoryData","historyData","syncStatusTableHeadCells","syncIntervals","intervalDescription","Switch","card","noWrap","CardActions","syncConfigs","adfSyncStatusArray","populateOrganizationBIGroupData","PSAOrganizationId","getOrgReportsData","getOrgDashboardsData","data_","GroupName","groupName","ClientUserDetails","emailSubscriptionList","emailFilterList","clientUserPermissionsList","emailSubscriptionsArray","emailFiltersArray","clientUserPermissionArray","handleEmailSubscriptionChange","subscriptions","subscription","subscriptionId","handleEmailFilterChange","handleClientUserPermissionsChange","permissionId","isValidUserEmail","errorTextUserEmail","getClientUserData","getClientUserReportsData","getClientUserDashboardsData","GetUserEmailSubscriptionList","GetUserEmailFilterList","GetClientUserPermissionsList","clientModulePermissionArray","canEditCreateOrders","subscribed","subscriptionName","saveClientUserReportsData","saveClientUserDashboardsData","adminUserPath","deleteAdminUser","populateAdminUsersData","newDataMappingPath","DataMappingCreate","setItems","populateItems","hasLinks","isMasterData","DataMappingEdit","typesMenu","setTypesMenu","firstData","setFirstData","secondData","setSecondData","links","setLinks","typeRules","setTypeRules","setIsNewMap","populateTypeMenus","getDataItem","firstDataId","getExistingLinksForOrg","existingLinks","stateValue","uniqueTypes","uniqBy","isChange","handleCreateLinksClickOpen","GetDataTypeLinkRules","populateKeyMenus","typeSelected","newSecondData","linkInfo","secondDataId","handleSecondDataKeyChanged","secondDataItem","updatedSecoundData","handleSaveLinks","FirstDataId","SecondDataArray","saveDataItem","handleRemoveRowIconClick","z","firstDataType","secondDataType","paddingTop","AdminUserDetails","saveAdminUserData","handleEmailSubscriptionChage","GetAdminUserData","getAdminUserReportsData","getAdminUserDashboardsData","GetAdminEmailSubscriptionList","data-shrink","for","itemLabel","disabledOn","searchOn","saveAdminUserReportsData","saveAdminUserDashboardsData","trackActivity","activity","AuthorizeRoute","ready","authenticationChanged","populateAuthenticationState","redirectUrl","Login","QueryParameterNames","ReturnUrl","encodeURI","authToken","AdminAuthorizeRoute","clearCache","LoginActions","login","getReturnUrl","LoginCallback","processLoginCallback","LoginFailed","URLSearchParams","Message","Profile","redirectToProfile","Register","redirectToRegister","returnUrl","signIn","AuthenticationResultStatus","Redirect","Success","Fail","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","redirectToApiAuthorizationPath","IdentityRegisterPath","IdentityManagePath","apiAuthorizationPath","Logout","isReady","LogoutActions","logout","LogoutCallback","processLogoutCallback","LoggedOut","signOut","completeSignOut","ApiAuthorizationRoutes","loginAction","logoutAction","LogOutCallback","BookingOrdersConsolidation","primaryTextColor","bookingHeaderValues","setBookingHeaderValues","mergedOrderData","setMergedOrderData","fetchingMergedOrderData","setFetchingMergedOrderData","mergedOrderDataConflictsFound","setMergedOrderDataConflictsFound","mergedOrderDataConflictMessage","setMergedOrderDataConflictMessage","fetchConsolidatedOrderData","responseJson","outerPacks","uniqueOrigins","uniqueDestinations","uniqueTransportModes","uniqueContainerTypes","uniqueIncoTerms","uniqueServiceLevels","uniquePieceUOMs","uniqueWeightUOMs","uniqueVolumeUOMs","uniqueRequiredETDs","uniqueRequiredETAs","uniqueRequestedDeliveryDates","bookingHeaderConflictsFound","renderSelectionGroup","valueArray","handleValueChange","totalPieces","pieceUOM","totalWeight","totalVolume","currentClientCode","OrdersTable","orderSearchTypes","saveOrderFilterValuesToState","orderFilters","handlePageChange","fieldname","renderToolTipDeliveryAddress","renderOrdersTable","createBookingButtonDisabled","clientView","orderFlagged","toggleOrderFlagged","createBooking","handleBookingOrderValidationModalClose","bookingOrderValidationModalOpen","handleBookingOrderValidationModalSubmit","newOrderList","orderStage","orderList","getRandomColor","Math","floor","random","pow","toString","orderStats","createBookingClients","setClientsWithCreateBookingAccess","fetchOrderSearchTypes","setCreateBookingAccess","approvecount","OrderNumber","OrderNumberSplit","BuyerCode","createBookingClient","orderLines","Order","setIsLoadingShow","OrderInfoCard","customString1","orderDateString","supplierFullName","buyerFullName","exWorkRequiredByDateString","dateExFactoryEstString","deliveryRequiredByDateString","dateDeliveredEstString","leadTime","OrderSupplierInfoCard","supplierAddress1","supplierAddress2","supplierCity","supplierState","supplierPostCode","supplierCountryCode","OrderShipmentDetailCard","housebillNumber","OrderPlanningCard","plannedDepartureVessel","plannedDepartureVoyage","dateDepartEstString","plannedArrivalVessel","plannedArrivalVoyage","dateArriveEstString","PortAutocomplete","OrderPlanningCardEdit","loadUnlocoCodes","dischargeUnlocoCodes","loadUNLOCOCodeObject","setLoadUNLOCOCodeObject","dischargeUNLOCOCodeObject","setDischargeUNLOCOCodeObject","setPlannedDepartureVessel","setPlannedDepartureVoyage","setDateDepartEst","setPlannedArrivalVessel","setPlannedArrivalVoyage","setDateArriveEst","setContainers","setMasterBillNumber","orderBookingNumber","setOrderBookingNumber","orderBookingDate","setOrderBookingDate","setBackgroundColor","containerTypes","setContainerTypes","setEditing","saving","setSaving","setShowAlert","alertData","setAlertData","setCW1Values","getContainerTypes","pickerValue","dateType","masterbillNumber","updateOrderPlanningData","updateOrderPlanning","handleUpdateSuccess","handleUpdateFailure","handleAddContainer","containerCount","newContainers","handleRemoveContainer","orderCarrierBookingNumber","orderCarrierBookingDate","originPort","destinationPort","departureVessel","departureVoyage","arrivalVessel","arrivalVoyage","OrderDocumentsCard","OrderDetailPage","getOrderPlanningPermission","canEditOrderPlanning","populateOrderData","shipmentDetails","fetchOrderExtraData","orderExtra","clientResponse","orderExtraResponse","OrderDetails","OrderLine","DeliveryTable","customsTableConfigurationArray","deliveryTableConfigurationArray","dbColumns","storeColumns","dbCol","toggleShipmentFlagged","weekday","info","deliveries","PickupTable","pickupTableConfigurationArray","pickups","Report","reportsList","setReportList","setReportId","datasetId","setDatasetId","setColorThemeRGB","setReportName","isDownloading","setIsDownloading","setReport","populateReportsData","downloadReport","currentPage","reportPageParam","getActivePage","activePage","populateReportData","selectedReportId","getPages","pages","gap","embedObject","ReportDetails","reportData","embeddedReport","DashboardsMore","DashboardArray","dashboardArray","customerId","searchIcon","DashboardDetails","dashboardData","embeddedDashboard","ContainerTable","containerSearchTypes","saveContainerFilterValuesToState","containerFilters","containerData","renderContainersTable","newContainerList","containerList","ContainerManagement","showSearchContainer","setShowSearchContainer","ReactGA","initialize","App","exact","ApiAuthorizationPrefix","baseUrl","getElementsByTagName","getAttribute","createRoot","basename","_callbacks","_nextSubscriptionId","_isAuthenticated","_popUpDisabled","roleName","isRole","profile","ensureUserManagerInitialized","userManager","access_token","signinSilent","createArguments","silentUser","signinPopup","popUpUser","signinRedirect","redirect","signinCallback","signoutPopup","signoutRedirect","signoutCallback","notifySubscribers","subscriptionIndex","element","useReplaceToNavigate","ApiAuthorizationClientConfigurationUrl","ApplicationName","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","OrderActions","ShipmentActions","ContainerActions","AccountActions","DataMapping","UserActions","CreateShipmentPackLines","fetchCall","successBlock","failureBlock","isFile","fetchPOSTCall","postData","searchNumber","downloadDocumentPDFForOrder","documentName","BookingNumber","orderPlanningData","scheduledReport","urlModule","baseArray","arrayKeys","renderLink","tableStyles","stickyHeader"],"mappings":"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","file":"static/js/main.0b8a55f8.chunk.js","sourcesContent":["import React, { PureComponent } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n/**\r\n * React Router Nav Link wrapper to forward the ref to fix \"Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?\"\r\n *\r\n * From https://material-ui.com/guides/composition/#caveat-with-refs\r\n */\r\nclass NavLinkMui extends PureComponent {\r\n render() {\r\n const { forwardedRef, ...props } = this.props\r\n return \r\n }\r\n}\r\n\r\nexport default NavLinkMui\r\n","import React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport ListSubheader from '@material-ui/core/ListSubheader'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport Collapse from '@material-ui/core/Collapse'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport ExpandLess from '@material-ui/icons/ExpandLess'\r\nimport ExpandMore from '@material-ui/icons/ExpandMore'\r\nimport NavLinkMui from './Navigation/NavLinkMui'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n root: {\r\n width: '100%',\r\n maxWidth: 360,\r\n background: theme.palette.primary.main\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing(4)\r\n }\r\n})\r\n\r\nclass NestedList extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n items: null\r\n }\r\n }\r\n\r\n state = {}\r\n\r\n handleClick = e => {\r\n this.setState({ [e]: !this.state[e] })\r\n }\r\n\r\n getSelected = (index, subindex = null) => {\r\n const path = window.location.pathname\r\n\r\n if (subindex !== null) {\r\n if (\r\n path.indexOf('/shipments/create') === 0 &&\r\n index === 1 &&\r\n subindex === 0\r\n ) {\r\n return true\r\n } else if (\r\n path.indexOf('/organizations') === 0 &&\r\n index === 20 &&\r\n subindex === 0\r\n ) {\r\n return true\r\n } else if (\r\n path.indexOf('/clients') === 0 &&\r\n index === 20 &&\r\n subindex === 1\r\n ) {\r\n return true\r\n } else if (\r\n path.indexOf('/admin/data_mapping') === 0 &&\r\n index === 20 &&\r\n subindex === 2\r\n ) {\r\n return true\r\n } else if (\r\n path.indexOf('/admin/users') === 0 &&\r\n index === 20 &&\r\n subindex === 3\r\n ) {\r\n return true\r\n } /*else if (path.length === 1 && index === 1 && subindex === 0) {\r\n return true\r\n }*/\r\n } else if (subindex === null) {\r\n if (path === '/account' && index === 5) {\r\n return true\r\n } else if (path === '/accounting' && index === 3) {\r\n return true\r\n } else if (path === '/booking' && index === 4) {\r\n return true\r\n } else if (\r\n path.indexOf('/shipments') === 0 &&\r\n path.indexOf('/shipments/create') === -1 &&\r\n index === 1\r\n ) {\r\n return true\r\n } else if (path.indexOf('/customs') === 0 && index === 2) {\r\n return true\r\n } else if (path === '/' && index === 0) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n render() {\r\n const { classes, items, textColor } = this.props\r\n return (\r\n
\r\n {items.list.map((list, index) => {\r\n return (\r\n {list.title}\r\n }\r\n >\r\n {list.items.map(item => {\r\n const selected = this.getSelected(index)\r\n const isExternal =\r\n item.external !== null &&\r\n item.external !== undefined &&\r\n item.external\r\n const targetProps = isExternal\r\n ? { target: '_blank' }\r\n : {}\r\n return (\r\n
\r\n {item.subitems != null ? (\r\n
\r\n
\r\n ) : (\r\n
\r\n )\r\n })}\r\n \r\n )\r\n })}\r\n
\r\n )\r\n }\r\n}\r\nNestedList.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n}\r\nexport default withStyles(styles)(NestedList)\r\n","import React from 'react'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\nconst FooterNav = () => (\r\n
\r\n \r\n \r\n \r\n © Copyright 2024\r\n \r\n \r\n \r\n \r\n \r\n Terms & Conditions\r\n \r\n \r\n \r\n \r\n
\r\n)\r\n\r\nFooterNav.propTypes = {}\r\nFooterNav.defaultProps = {}\r\n\r\nexport default FooterNav\r\n","import React, { PureComponent } from 'react'\r\nimport { Nav, NavItem, NavLink } from 'reactstrap'\r\nimport { Card, CardMedia, CardActionArea, CardContent } from '@material-ui/core'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport PropTypes from 'prop-types'\r\nimport { CollapseBtn, CollapseIcon } from '@mui-treasury/layout'\r\nimport { ApplicationPaths } from './../api-authorization/ApiAuthorizationConstants'\r\nimport { Grid, Icon } from '@material-ui/core'\r\nimport Select from '@material-ui/core/Select'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n select: {\r\n root: {\r\n backgroundColor: 'blue'\r\n },\r\n icon: {\r\n fill: 'white'\r\n },\r\n select: {\r\n color: 'white',\r\n backgroundColor: 'red'\r\n },\r\n selectMenu: {\r\n color: 'white'\r\n }\r\n }\r\n})\r\n\r\nconst whiteLogo = '/whitelogo.png'\r\n\r\nclass NavBar extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n selectedIndex: 0,\r\n organization: null,\r\n isLoading: true,\r\n orgLogoURL: null\r\n }\r\n }\r\n async componentDidMount() {\r\n await this.populateConfig()\r\n // try get logo url from local storage\r\n const orgLogoURL = localStorage.getItem('orgLogoURL')\r\n if (orgLogoURL) {\r\n this.setState({ orgLogoURL })\r\n }\r\n this.setInitialOrganization(this.props.organizations)\r\n }\r\n\r\n handleChange = event => {\r\n const { organizations } = this.props\r\n const index = event.target.value\r\n window.location.href = `https://${organizations[index].subdomain}`\r\n }\r\n\r\n goBack = () => {\r\n this.props.history.goBack()\r\n }\r\n\r\n setInitialOrganization = organizations => {\r\n var found = 0\r\n organizations.map((organization, index) => {\r\n if (\r\n window.location.hostname.indexOf(organization.subdomain) !== -1\r\n ) {\r\n found = index\r\n }\r\n })\r\n\r\n this.setState({ selectedIndex: found })\r\n }\r\n\r\n renderTitle = () => {\r\n const { location } = this.props\r\n const { pathname } = location\r\n const { isLoading } = this.state\r\n const forwardSlashCount = (pathname.match(/\\//g) || []).length\r\n\r\n if (isLoading) {\r\n return 'Loading...'\r\n }\r\n\r\n if (pathname === '/account') {\r\n return 'Account'\r\n } else if (pathname === '/password') {\r\n return 'Account > Change Password'\r\n } else if (pathname === '/organizations') {\r\n return 'Organization Details'\r\n } else if (pathname === '/clients') {\r\n return 'Clients'\r\n } else if (pathname === '/admin/data_mapping') {\r\n return 'Data Mappings'\r\n } else if (pathname === '/admin/users/new') {\r\n return 'New Admin User'\r\n } else if (pathname === '/admin/users') {\r\n return 'Admin Users'\r\n } else if (pathname === '/clients/new') {\r\n return 'New Client'\r\n } else if (pathname === '/shipments/create') {\r\n return 'Create Booking > Details'\r\n } else if (pathname === '/shipments/packlines') {\r\n return 'Create Booking > Packlines'\r\n } else if (pathname === '/shipments/notes') {\r\n return 'Create Booking > Notes'\r\n } else if (pathname === '/shipments/containers') {\r\n return 'Create Booking > Containers'\r\n } else if (pathname === '/shipments/review') {\r\n return 'Create Booking > Review'\r\n } else if (pathname === '/shipments') {\r\n return 'Shipments'\r\n } else if (pathname === '/orders/create') {\r\n return 'Create Order > Details'\r\n } else if (pathname === '/orders/create/notes') {\r\n return 'Create Order > Notes'\r\n } else if (pathname === '/orders/create/lines') {\r\n return 'Create Order > Lines'\r\n } else if (pathname === '/orders/create/review') {\r\n return 'Create Order > Review'\r\n } else if (pathname.indexOf('/shipments/') === 0) {\r\n return 'Shipment Details'\r\n } else if (pathname.indexOf('/clients/') === 0) {\r\n return 'Client Details'\r\n } else if (pathname.indexOf('/userclients/') === 0) {\r\n return 'Client User Relationships'\r\n } else if (pathname.indexOf('/admin/users/') === 0) {\r\n return 'Admin User Details'\r\n } else if (pathname.indexOf('/admin/data_mapping/') === 0) {\r\n return 'Edit Data Mapping'\r\n } else if (pathname === '/admin/data_mapping/new') {\r\n return 'New Data Mapping'\r\n } else if (pathname.indexOf('/orders/') === 0) {\r\n return 'Order Details'\r\n } else if (pathname === '/orders') {\r\n return 'Orders'\r\n } else if (pathname === '/orderlines') {\r\n return 'Order Lines'\r\n } else if (pathname === '/bookings') {\r\n return 'Bookings'\r\n } else if (pathname.indexOf('/bookings/') === 0) {\r\n return 'Booking Details'\r\n } else if (pathname === '/containers') {\r\n return 'Containers'\r\n } else if (pathname === '/customs') {\r\n return 'Customs'\r\n } else if (pathname.indexOf('/customs/') === 0) {\r\n return 'Customs Details'\r\n } else if (pathname === '/accounting') {\r\n return 'Accounting'\r\n } else if (pathname === '/clientusers') {\r\n return 'All Client Users'\r\n } else if (pathname === '/powerbireports') {\r\n return 'Reports'\r\n } else if (pathname === '/') {\r\n return 'Dashboard'\r\n } else if (\r\n pathname.indexOf('/users/' === 0) &&\r\n forwardSlashCount === 3\r\n ) {\r\n return 'Client User Details'\r\n } else if (\r\n pathname.indexOf('/users/' === 0) &&\r\n forwardSlashCount === 2 &&\r\n pathname.length === 43\r\n ) {\r\n return 'Client Users'\r\n }\r\n\r\n return 'Loading...'\r\n }\r\n\r\n renderOrgDropdown = () => {\r\n const { organizations } = this.props\r\n const { selectedIndex } = this.state\r\n return organizations.length > 0 ? (\r\n \r\n \r\n {organizations.map((organization, index) => {\r\n return (\r\n \r\n {organization.name +\r\n ' - ' +\r\n organization.subdomain}\r\n \r\n )\r\n })}\r\n \r\n \r\n ) : null\r\n }\r\n\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n isLoading: false,\r\n orgLogoURL: data.organizationLogoUrl\r\n })\r\n }\r\n\r\n render() {\r\n const { backgroundColor, textColor, history } = this.props\r\n const { organization, orgLogoURL } = this.state\r\n\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n\r\n const themeTextColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`,\r\n state: {\r\n local: true\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nNavBar.propTypes = {\r\n organizations: PropTypes.array\r\n}\r\nNavBar.defaultProps = {\r\n organizations: []\r\n}\r\n\r\nexport default withStyles(styles)(withRouter(NavBar))\r\n","import authService from '../components/api-authorization/AuthorizeService'\r\n\r\nconst checkCustomPermission = (key, array) => {\r\n if (array === undefined || array === null || array.length === 0)\r\n return false\r\n\r\n const customPermissions = array.filter(\r\n permission => permission.propertyKey === key\r\n )\r\n return customPermissions.length > 0 ? customPermissions[0].value : false\r\n}\r\n\r\nexport const extractCreateShipment = array => {\r\n return checkCustomPermission('ShipmentCreate', array)\r\n}\r\n\r\nexport const extractSearchShipment = array => {\r\n return checkCustomPermission('ShipmentSearch', array)\r\n}\r\n\r\nexport const extractSeeCustoms = array => {\r\n return checkCustomPermission('Customs', array)\r\n}\r\n\r\nexport const extractSeeAccounting = array => {\r\n return checkCustomPermission('Accounting', array)\r\n}\r\n\r\nexport const extractSeeBooking = array => {\r\n return checkCustomPermission('Booking', array)\r\n}\r\n\r\nexport const extractSeeContainers = array => {\r\n return checkCustomPermission('Container', array)\r\n}\r\n\r\nexport const extractSeeOrder = array => {\r\n return checkCustomPermission('Order', array)\r\n}\r\n\r\nexport const extractCreateOrder = array => {\r\n return checkCustomPermission('CreateOrder', array)\r\n}\r\n\r\nexport const extractSeeOrderLine = array => {\r\n return checkCustomPermission('OrderLine', array)\r\n}\r\n\r\nexport const canSeeCustoms = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractSeeCustoms(appInfoArray.modulePermissionArray)) ||\r\n (extractSeeCustoms(appInfoArray.modulePermissionArray) &&\r\n extractSeeCustoms(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canSeeContainers = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractSeeContainers(appInfoArray.modulePermissionArray)) ||\r\n (extractSeeContainers(appInfoArray.modulePermissionArray) &&\r\n extractSeeContainers(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canSeeAccounting = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractSeeAccounting(appInfoArray.modulePermissionArray)) ||\r\n (extractSeeAccounting(appInfoArray.modulePermissionArray) &&\r\n extractSeeAccounting(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canSeeBooking = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractSeeBooking(appInfoArray.modulePermissionArray)) ||\r\n (extractSeeBooking(appInfoArray.modulePermissionArray) &&\r\n extractSeeBooking(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canSeeOrders = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractSeeOrder(appInfoArray.modulePermissionArray)) ||\r\n (extractSeeOrder(appInfoArray.modulePermissionArray) &&\r\n extractSeeOrder(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canCreateOrder = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin && extractCreateOrder(appInfoArray.modulePermissionArray)) ||\r\n (extractCreateOrder(appInfoArray.modulePermissionArray) &&\r\n extractCreateOrder(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canCreateShipment = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin &&\r\n extractCreateShipment(appInfoArray.modulePermissionArray)) ||\r\n (extractCreateShipment(appInfoArray.modulePermissionArray) &&\r\n extractCreateShipment(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const canSearchShipment = async appInfoArray => {\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n return (\r\n isSuperAdmin ||\r\n (isAdmin &&\r\n extractSearchShipment(appInfoArray.modulePermissionArray)) ||\r\n (extractSearchShipment(appInfoArray.modulePermissionArray) &&\r\n extractSearchShipment(appInfoArray.userModulePermissionArray))\r\n )\r\n}\r\n\r\nexport const clientUserHasPermission = async (clientId, permissionName) => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetClientUserPermissionValue?clientId=' +\r\n clientId +\r\n '&permissionName=' +\r\n permissionName,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n return data\r\n }\r\n return false\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport CssBaseline from '@material-ui/core/CssBaseline'\r\nimport { Root, Header, Sidebar, Content } from '@mui-treasury/layout'\r\nimport { CollapseBtn, CollapseIcon } from '@mui-treasury/layout'\r\nimport { createTheme } from '@material-ui/core/styles'\r\nimport { Card, CardMedia, CardActionArea, CardContent } from '@material-ui/core'\r\nimport { Typography } from '@material-ui/core'\r\nimport { standardLayoutPreset } from '@mui-treasury/layout/presets'\r\nimport NestedList from './NestedList'\r\nimport FooterNav from './shared/FooterNav'\r\nimport { navItems } from './Navigation/NavItems'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport NavBar from './shared/NavBar'\r\nimport { Alert, AlertTitle } from '@material-ui/lab'\r\n\r\nimport {\r\n canSeeCustoms,\r\n canCreateShipment,\r\n canSearchShipment,\r\n canSeeBooking,\r\n canSeeOrders,\r\n canCreateOrder,\r\n canSeeAccounting,\r\n canSeeContainers\r\n} from '../utils/permissions'\r\nimport { getAppInfo } from '../api/api'\r\n\r\nimport './styles.css'\r\nimport '../../src/custom.css'\r\n\r\nexport class Layout extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n organizations: [],\r\n isAuthenticated: false,\r\n isAdmin: false,\r\n isSuperAdmin: false,\r\n organization: null,\r\n canShowCustoms: false,\r\n canCreateShipment: false,\r\n canSearchShipment: false,\r\n canSeeBooking: false,\r\n canSeeOrders: false,\r\n canCreateOrder: false,\r\n canSeeAccounting: false,\r\n canSeeContainers: false,\r\n bannerInfo: null,\r\n showBannerAlert: false\r\n }\r\n }\r\n\r\n async componentWillUnmount() {\r\n if (this._subscription) {\r\n authService.unsubscribe(this._subscription)\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState())\r\n this.populateState().then(() => {\r\n getAppInfo(null, async data => {\r\n this.setState({\r\n organization: data,\r\n canShowCustoms: await canSeeCustoms(data),\r\n canCreateShipment: await canCreateShipment(data),\r\n canSearchShipment: await canSearchShipment(data),\r\n canSeeBooking: await canSeeBooking(data),\r\n canSeeOrders: await canSeeOrders(data),\r\n canCreateOrder: await canCreateOrder(data),\r\n canSeeAccounting: await canSeeAccounting(data),\r\n canSeeContainers: await canSeeContainers(data)\r\n })\r\n\r\n document.title = data.organizationAppName\r\n\r\n if (this.state.isSuperAdmin) {\r\n this.getOrganizations()\r\n }\r\n\r\n if (data.showBanner === true) {\r\n const bannerInfo = {\r\n bannerText: data.bannerText,\r\n bannerBackgroundColor: data.bannerBackgroundColor,\r\n bannerTextColor: data.bannerTextColor,\r\n bannerTitle: data.bannerTitle\r\n }\r\n this.setState({ bannerInfo, showBannerAlert: true })\r\n }\r\n\r\n // set zoom level in local storage to ensure it's applied for user\r\n localStorage.setItem('zoomLevel', data.zoomLevel)\r\n localStorage.setItem('orgLogoURL', data.organizationLogoUrl)\r\n })\r\n })\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, isAdmin, isSuperAdmin] = await Promise.all([\r\n authService.isAuthenticated(),\r\n authService.isAdmin(),\r\n authService.isSuperAdmin()\r\n ])\r\n\r\n this.setState({\r\n isAuthenticated,\r\n isAdmin,\r\n isSuperAdmin\r\n })\r\n }\r\n\r\n handleCloseBannerAlert = () => {\r\n this.setState({ showBannerAlert: false })\r\n }\r\n\r\n async getOrganizations() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api' + ApplicationPaths.Organizations + '/GetOrganizations',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ organizations: data })\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n isAuthenticated,\r\n organization,\r\n organizations,\r\n isAdmin,\r\n isSuperAdmin,\r\n canShowCustoms,\r\n canCreateShipment,\r\n canSearchShipment,\r\n canSeeBooking,\r\n canSeeOrders,\r\n canCreateOrder,\r\n canSeeAccounting,\r\n canSeeContainers,\r\n showBannerAlert,\r\n bannerInfo\r\n } = this.state\r\n\r\n const customLinkUrl =\r\n organization !== null &&\r\n organization.organizationCustomLinkUrl !== null &&\r\n organization.organizationCustomLinkUrl.length > 0\r\n ? organization.organizationCustomLinkUrl\r\n : null\r\n\r\n const customLinkName =\r\n organization !== null &&\r\n organization.organizationCustomLinkName !== null &&\r\n organization.organizationCustomLinkName.length > 0\r\n ? organization.organizationCustomLinkName\r\n : null\r\n\r\n const customLink2Url =\r\n organization !== null &&\r\n organization.organizationCustomLink2Url !== null &&\r\n organization.organizationCustomLink2Url.length > 0\r\n ? organization.organizationCustomLink2Url\r\n : null\r\n\r\n const customLink2Name =\r\n organization !== null &&\r\n organization.organizationCustomLink2Name !== null &&\r\n organization.organizationCustomLink2Name.length > 0\r\n ? organization.organizationCustomLink2Name\r\n : null\r\n\r\n const customLink3Url =\r\n organization !== null &&\r\n organization.organizationCustomLink3Url !== null &&\r\n organization.organizationCustomLink3Url.length > 0\r\n ? organization.organizationCustomLink3Url\r\n : null\r\n\r\n const customLink3Name =\r\n organization !== null &&\r\n organization.organizationCustomLink3Name !== null &&\r\n organization.organizationCustomLink3Name.length > 0\r\n ? organization.organizationCustomLink3Name\r\n : null\r\n\r\n const customLink4Url =\r\n organization !== null &&\r\n organization.organizationCustomLink4Url !== null &&\r\n organization.organizationCustomLink4Url.length > 0\r\n ? organization.organizationCustomLink4Url\r\n : null\r\n\r\n const customLink4Name =\r\n organization !== null &&\r\n organization.organizationCustomLink4Name !== null &&\r\n organization.organizationCustomLink4Name.length > 0\r\n ? organization.organizationCustomLink4Name\r\n : null\r\n\r\n const customLink5Url =\r\n organization !== null &&\r\n organization.organizationCustomLink5Url !== null &&\r\n organization.organizationCustomLink5Url.length > 0\r\n ? organization.organizationCustomLink5Url\r\n : null\r\n\r\n const customLink5Name =\r\n organization !== null &&\r\n organization.organizationCustomLink5Name !== null &&\r\n organization.organizationCustomLink5Name.length > 0\r\n ? organization.organizationCustomLink5Name\r\n : null\r\n\r\n var items = navItems(\r\n isAuthenticated,\r\n isAdmin || isSuperAdmin,\r\n canShowCustoms,\r\n canCreateShipment,\r\n canSearchShipment,\r\n canSeeBooking,\r\n canSeeOrders,\r\n canCreateOrder,\r\n canSeeAccounting,\r\n canSeeContainers,\r\n customLinkUrl,\r\n customLinkName,\r\n customLink2Url,\r\n customLink2Name,\r\n customLink3Url,\r\n customLink3Name,\r\n customLink4Url,\r\n customLink4Name,\r\n customLink5Url,\r\n customLink5Name\r\n )\r\n\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#000000'\r\n\r\n const customTheme = createTheme({\r\n overrides: {\r\n MUIDataTableToolbar: {\r\n actions: {\r\n display: 'flex',\r\n flex: 'initial',\r\n '& > span, & > button': {\r\n order: 99\r\n },\r\n '& > span:last-child, & > button:last-child': {\r\n order: 1\r\n },\r\n '& > span:nth-child(4), & > button:nth-child(4)': {\r\n order: 2\r\n }\r\n }\r\n },\r\n MUIDataTableHeadCell: {\r\n fixedHeaderCommon: {\r\n backgroundColor: backgroundColor,\r\n color: textColor\r\n }\r\n },\r\n MuiDrawer: {\r\n paper: {\r\n background: backgroundColor,\r\n borderRight: 'none !important'\r\n }\r\n }\r\n },\r\n palette: {\r\n primary: {\r\n main: backgroundColor,\r\n contrastText: textColor\r\n },\r\n secondary: {\r\n main: '#fff',\r\n contrastText: backgroundColor,\r\n border: backgroundColor\r\n },\r\n background: {\r\n default: '#F9F9F5'\r\n }\r\n },\r\n zIndex: {\r\n drawer: 1100\r\n },\r\n root: {\r\n height: '100%'\r\n },\r\n\r\n textFieldForm: {\r\n width: '250px'\r\n },\r\n\r\n content: {\r\n minHeight: '600px'\r\n }\r\n })\r\n\r\n return (\r\n
\r\n \r\n {({ headerStyles, sidebarStyles }) => (\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {showBannerAlert && (\r\n \r\n {bannerInfo.bannerTitle && (\r\n \r\n {bannerInfo.bannerTitle}\r\n \r\n )}\r\n {bannerInfo.bannerText}\r\n \r\n )}\r\n
\r\n {this.props.children}\r\n
\r\n
\r\n \r\n \r\n {({ collapsed }) => (\r\n
\r\n \r\n {isAuthenticated && (\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n","import { ApplicationPaths } from './../api-authorization/ApiAuthorizationConstants'\r\n\r\nexport function navItems(\r\n authenticated,\r\n isAdmin,\r\n canSeeCustoms,\r\n canCreateShipment,\r\n canSearchShipment,\r\n canSeeBooking,\r\n canSeeOrders,\r\n canCreateOrder,\r\n canSeeAccounting,\r\n canSeeContainers,\r\n organizationCustomLinkUrl,\r\n organizationCustomLinkName,\r\n organizationCustomLink2Url,\r\n organizationCustomLink2Name,\r\n organizationCustomLink3Url,\r\n organizationCustomLink3Name,\r\n organizationCustomLink4Url,\r\n organizationCustomLink4Name,\r\n organizationCustomLink5Url,\r\n organizationCustomLink5Name\r\n) {\r\n const reportPath = {\r\n pathname: `${ApplicationPaths.Reports}`,\r\n state: { local: true }\r\n }\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`,\r\n state: { local: true }\r\n }\r\n const dashboardPath = {\r\n pathname: `${ApplicationPaths.DefaultLoginRedirectPath}`\r\n }\r\n const shipmentsPath = {\r\n pathname: `${ApplicationPaths.Shipments}`,\r\n CreateShipment: `${ApplicationPaths.CreateShipment}`,\r\n Delivery: `${ApplicationPaths.Delivery}`,\r\n Pickup: `${ApplicationPaths.Pickup}`,\r\n Container: `${ApplicationPaths.Container}`\r\n }\r\n const deliveryPath = {\r\n pathname: `${ApplicationPaths.Delivery}`\r\n }\r\n const pickupPath = {\r\n pathname: `${ApplicationPaths.Pickup}`\r\n }\r\n const customsPath = {\r\n pathname: `${ApplicationPaths.Customs}`\r\n }\r\n\r\n const accountingPath = {\r\n pathname: `${ApplicationPaths.Accounting}`\r\n }\r\n\r\n const bookingsPath = {\r\n pathname: `${ApplicationPaths.Bookings}`\r\n }\r\n\r\n const ordersPath = {\r\n pathname: `${ApplicationPaths.Orders}`,\r\n createOrder: `${ApplicationPaths.CreateOrder}`\r\n }\r\n\r\n const orderLinesPath = {\r\n pathname: `${ApplicationPaths.OrderLines}`\r\n }\r\n\r\n const customLinkPath = {\r\n pathname: organizationCustomLinkUrl || null\r\n }\r\n\r\n const customLink2Path = {\r\n pathname: organizationCustomLink2Url || null\r\n }\r\n\r\n const customLink3Path = {\r\n pathname: organizationCustomLink3Url || null\r\n }\r\n\r\n const customLink4Path = {\r\n pathname: organizationCustomLink4Url || null\r\n }\r\n\r\n const customLink5Path = {\r\n pathname: organizationCustomLink5Url || null\r\n }\r\n // const pic0 = require('./logo.png');\r\n\r\n const clientsPath = { pathname: `${ApplicationPaths.Clients}` }\r\n const usersPath = { pathname: `${ApplicationPaths.OrgUsers}` }\r\n const dataMappingPath = { pathname: `${ApplicationPaths.DataMappingIndex}` }\r\n const organizationsPath = { pathname: `${ApplicationPaths.Organizations}` }\r\n const accountPath = { pathname: `${ApplicationPaths.Account}` }\r\n const adminUsersPath = { pathname: `${ApplicationPaths.AdminUsers}` }\r\n\r\n if (!authenticated) {\r\n return { list: [] }\r\n }\r\n\r\n var list = [\r\n {\r\n id: 1,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Dashboard',\r\n icon: 'dashboard',\r\n link: dashboardPath,\r\n hidden: !authenticated,\r\n external: false\r\n }\r\n ]\r\n },\r\n {\r\n id: 2,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Purchase Orders',\r\n icon: 'assignment',\r\n link: '#',\r\n hidden: !canSeeOrders,\r\n external: false,\r\n subitems: [\r\n {\r\n id: 1,\r\n name: 'Order Search',\r\n // icon: 'search',\r\n Image: '/logo.png',\r\n link: ordersPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 2,\r\n name: 'Order Line Search',\r\n // icon: 'reorder',\r\n link: orderLinesPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 3,\r\n name: 'Create Order',\r\n //icon: 'add',\r\n link: ordersPath.createOrder,\r\n hidden: !canCreateOrder,\r\n external: false\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n id: 3,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Bookings',\r\n icon: 'assignment',\r\n link: '#',\r\n hidden: !canSeeBooking && !canCreateShipment,\r\n external: false,\r\n subitems: [\r\n {\r\n id: 1,\r\n name: 'Bookings Search',\r\n // icon: 'cropfree',\r\n link: bookingsPath,\r\n hidden: !canSeeBooking,\r\n external: false\r\n },\r\n {\r\n id: 1,\r\n name: 'Create Booking',\r\n // icon: 'add',\r\n link: shipmentsPath.CreateShipment,\r\n hidden: !canCreateShipment,\r\n external: false\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n id: 4,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Shipments',\r\n icon: 'assignment_turned_in',\r\n link: '#',\r\n hidden: !canSearchShipment,\r\n external: false,\r\n subitems: [\r\n {\r\n id: 1,\r\n name: 'Shipment Search',\r\n // icon: 'cropfree',\r\n link: shipmentsPath,\r\n hidden: !canSearchShipment,\r\n external: false\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n id: 5,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Containers',\r\n icon: 'border_all',\r\n link: '#',\r\n hidden: !canSeeContainers,\r\n external: false,\r\n subitems: [\r\n {\r\n id: 1,\r\n name: 'Container Search',\r\n // icon: 'cropfree',\r\n link: shipmentsPath.Container,\r\n hidden: !canSeeContainers,\r\n external: false\r\n }\r\n // {\r\n // id: 2,\r\n // name: 'Delivery Management',\r\n // // icon: 'cropfree',\r\n // link: shipmentsPath.Delivery,\r\n // hidden: !canSearchShipment,\r\n // external: false\r\n // },\r\n // {\r\n // id: 3,\r\n // name: 'Pickup Management',\r\n // // icon: 'cropfree',\r\n // link: shipmentsPath.Pickup,\r\n // hidden: !canSearchShipment,\r\n // external: false\r\n // }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n id: 6,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Customs',\r\n icon: 'policy',\r\n link: customsPath,\r\n hidden: !canSeeCustoms,\r\n external: false\r\n }\r\n ]\r\n },\r\n {\r\n id: 7,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Accounting',\r\n icon: 'description',\r\n link: accountingPath,\r\n hidden: !canSeeAccounting,\r\n external: false\r\n }\r\n ]\r\n },\r\n {\r\n id: 8,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Account',\r\n icon: 'person',\r\n link: accountPath,\r\n hidden: !authenticated,\r\n external: false\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n var idReference = 9\r\n\r\n if (organizationCustomLinkUrl !== null) {\r\n list.push({\r\n id: idReference,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: organizationCustomLinkName || 'Custom Link',\r\n icon: 'link',\r\n link: customLinkPath || '#',\r\n external: true\r\n }\r\n ]\r\n })\r\n\r\n idReference = idReference + 1\r\n }\r\n\r\n if (organizationCustomLink2Url !== null) {\r\n list.push({\r\n id: idReference,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: organizationCustomLink2Name || 'Custom Link',\r\n icon: 'link',\r\n link: customLink2Path || '#',\r\n external: true\r\n }\r\n ]\r\n })\r\n\r\n idReference = idReference + 1\r\n }\r\n\r\n if (organizationCustomLink3Url !== null) {\r\n list.push({\r\n id: idReference,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: organizationCustomLink3Name || 'Custom Link',\r\n icon: 'link',\r\n link: customLink3Path || '#',\r\n external: true\r\n }\r\n ]\r\n })\r\n\r\n idReference = idReference + 1\r\n }\r\n\r\n if (organizationCustomLink4Url !== null) {\r\n list.push({\r\n id: idReference,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: organizationCustomLink4Name || 'Custom Link',\r\n icon: 'link',\r\n link: customLink4Path || '#',\r\n external: true\r\n }\r\n ]\r\n })\r\n\r\n idReference = idReference + 1\r\n }\r\n\r\n if (organizationCustomLink5Url !== null) {\r\n list.push({\r\n id: idReference,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: organizationCustomLink5Name || 'Custom Link',\r\n icon: 'link',\r\n link: customLink5Path || '#',\r\n external: true\r\n }\r\n ]\r\n })\r\n\r\n idReference = idReference + 1\r\n }\r\n\r\n if (isAdmin) {\r\n list.push({\r\n id: 20,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Administration',\r\n icon: 'build',\r\n link: '#',\r\n hidden: false,\r\n external: false,\r\n subitems: [\r\n {\r\n id: 1,\r\n name: 'Organization',\r\n // icon: 'business',\r\n link: organizationsPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 2,\r\n name: 'Clients',\r\n // icon: 'person',\r\n link: clientsPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 2,\r\n name: 'Client Users',\r\n // icon: 'person',\r\n link: usersPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 3,\r\n name: 'Data Mapping',\r\n // icon: 'storage',\r\n link: dataMappingPath,\r\n hidden: false,\r\n external: false\r\n },\r\n {\r\n id: 4,\r\n name: 'Admin Users',\r\n // icon: 'supervisor_account',\r\n link: adminUsersPath,\r\n hidden: false,\r\n external: false\r\n }\r\n ]\r\n }\r\n ]\r\n })\r\n }\r\n list.push({\r\n id: 22,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Reports',\r\n icon: 'assessment',\r\n link: reportPath,\r\n hidden: !authenticated,\r\n external: false\r\n }\r\n ]\r\n })\r\n list.push({\r\n id: 21,\r\n title: '',\r\n items: [\r\n {\r\n id: 1,\r\n name: 'Logout',\r\n icon: 'meeting_room',\r\n link: logoutPath,\r\n hidden: !authenticated,\r\n external: false\r\n }\r\n ]\r\n })\r\n\r\n return {\r\n list: list\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Card from '@material-ui/core/Card'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport CardContent from '@material-ui/core/CardContent'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport {\r\n canSeeCustoms,\r\n canSeeAccounting,\r\n canSeeBooking,\r\n canSeeOrders,\r\n canSeeContainers,\r\n canCreateOrder,\r\n canSearchShipment\r\n} from '../utils/permissions'\r\nimport '../custom.css'\r\nimport { PowerBIEmbed } from 'powerbi-client-react'\r\nimport { models } from 'powerbi-client'\r\nimport * as pbi from 'powerbi-client'\r\nimport {\r\n MenuItem,\r\n Select,\r\n Input,\r\n InputLabel,\r\n FormControl\r\n} from '@material-ui/core'\r\nimport Icon from '@material-ui/core/Icon'\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275\r\n },\r\n dashboardTile: {\r\n minWidth: 275,\r\n cursor: 'pointer'\r\n }\r\n})\r\n\r\nexport default function Dashboard() {\r\n //static displayName = Dashboard.name\r\n const classes = useStyles()\r\n const [dashboardsList, setDashboardlist] = useState([])\r\n const [selectedIndex, setIndexValue] = useState(0)\r\n const [groupId, setGroupId] = useState('')\r\n const [dashboardId, setDashboardId] = useState('')\r\n const [dashboardName, setDashboardName] = useState('')\r\n const [embedUrl, setEmbedUrl] = useState('')\r\n const [accessToken, setAccessToken] = useState('')\r\n const [displayDashboards, setDisplayDashboards] = useState(false)\r\n\r\n const [loading, setIsLoading] = useState(true)\r\n const [showCustoms, setShowCustoms] = useState(false)\r\n const [showAccounting, setShowAccounting] = useState(false)\r\n const [showBooking, setShowBooking] = useState(false)\r\n const [showShipments, setShowShipments] = useState(false)\r\n const [showOrders, setShowOrders] = useState(false)\r\n const [showCreateOrder, setShowCreateOrder] = useState(false)\r\n const [showContainers, setShowContainers] = useState(false)\r\n const [colorThemePirmaryRGB, setcolorThemePirmaryRGB] = useState('')\r\n const [colorThemeSecondaryRGB, setcolorThemeSecondaryRGB] = useState('')\r\n const [colorThemeTertiaryRGB, setcolorThemeTertiaryRGB] = useState('')\r\n const [colorThemeRGB, setcolorThemeRGB] = useState('')\r\n const [colorThemeTextRGB, setcolorThemeTextRGB] = useState('')\r\n\r\n const history = useHistory()\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n useEffect(() => {\r\n populateDashboardsData()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setShowCustoms(await canSeeCustoms(data))\r\n setShowAccounting(await canSeeAccounting(data))\r\n setShowBooking(await canSeeBooking(data))\r\n setShowShipments(await canSearchShipment(data))\r\n setShowOrders(await canSeeOrders(data))\r\n setShowCreateOrder(await canCreateOrder(data))\r\n setShowContainers(await canSeeContainers(data))\r\n setcolorThemePirmaryRGB(data.colorThemePirmaryRGB)\r\n setcolorThemeSecondaryRGB(data.colorThemeSecondaryRGB)\r\n setcolorThemeTertiaryRGB(data.colorThemeTertiaryRGB)\r\n setcolorThemeRGB(data.colorThemeRGB)\r\n setcolorThemeTextRGB(data.colorThemeTextRGB)\r\n }\r\n }\r\n\r\n //to get the dashboards list based on the login userid\r\n const populateDashboardsData = async () => {\r\n const user = await authService.getUser()\r\n let userId = ''\r\n if (user) {\r\n userId = user.sub\r\n } else {\r\n userId = null\r\n }\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetUserBIDashboards/' + userId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (data.length > 0) {\r\n setDisplayDashboards(true)\r\n }\r\n setDashboardlist(data)\r\n if (data.length > 0) {\r\n await populateDashboardData(\r\n data[selectedIndex].groupId,\r\n data[selectedIndex].dashboardId\r\n )\r\n }\r\n }\r\n }\r\n const handleDashboardChange = async event => {\r\n const index = event.target.value\r\n const dashboard = dashboardsList.find(\r\n dashboard => dashboard.dashboardId === index\r\n )\r\n setIndexValue(index)\r\n\r\n await populateDashboardData(dashboard.groupId, dashboard.dashboardId)\r\n }\r\n\r\n const goToSection = path => {\r\n history.push(path)\r\n }\r\n\r\n //to get the dashboard(access_token, embed_url) fotr display the dashboard\r\n const populateDashboardData = async (groupId, dashboardId) => {\r\n setIsLoading(true)\r\n const token = await authService.getAccessToken()\r\n const user = await authService.getUser()\r\n let userId = ''\r\n if (user) {\r\n userId = user.sub\r\n } else {\r\n userId = null\r\n }\r\n\r\n let data = {\r\n Id: dashboardId,\r\n GroupId: groupId,\r\n UserId: userId\r\n }\r\n await fetch('api/bidashboard/GetDashboardDetails', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n setIsLoading(true)\r\n return response.json()\r\n }\r\n })\r\n\r\n .then(d => {\r\n //const data = d.json()\r\n setDashboardId(d.dashboardId)\r\n setDashboardName(d.dashboardName)\r\n setEmbedUrl(d.embedUrl)\r\n setAccessToken(d.token)\r\n\r\n let dashboardContainer =\r\n document.getElementById('dashboardEmbedded')\r\n let powerbi = new pbi.service.Service(\r\n pbi.factories.hpmFactory,\r\n pbi.factories.wpmpFactory,\r\n pbi.factories.routerFactory\r\n )\r\n powerbi.reset(dashboardContainer)\r\n\r\n let embedConfig = {\r\n type: 'dashboard',\r\n id: d.dashboardId,\r\n embedUrl: d.embedUrl,\r\n accessToken: d.token,\r\n tokenType: models.TokenType.Embed,\r\n pageView: 'fitToWidth',\r\n settings: {\r\n panes: {\r\n filters: {\r\n expanded: false,\r\n visible: false\r\n }\r\n },\r\n background: models.BackgroundType.Transparent\r\n }\r\n }\r\n powerbi.embed(dashboardContainer, embedConfig)\r\n })\r\n .catch(error => {})\r\n }\r\n\r\n return (\r\n
\r\n \r\n {showOrders && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Orders)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Orders\r\n \r\n\r\n \r\n Purchase Order Search\r\n \r\n
\r\n
\r\n \r\n assignment\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showOrders && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.OrderLines)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Order Lines\r\n \r\n\r\n \r\n Purchase Order Line Search\r\n \r\n
\r\n
\r\n \r\n assignment\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showCreateOrder && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.CreateOrder)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Create Order\r\n \r\n\r\n \r\n Create New Purchase Order\r\n \r\n
\r\n
\r\n \r\n assignment\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showBooking && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Bookings)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Bookings\r\n \r\n\r\n \r\n Booking Search\r\n \r\n
\r\n
\r\n \r\n assignment\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showShipments && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Shipments)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Shipments\r\n \r\n\r\n \r\n Shipment Search\r\n \r\n
\r\n
\r\n \r\n assignment_turned_in\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showContainers && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Container)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Containers\r\n \r\n\r\n \r\n Container Search\r\n \r\n
\r\n
\r\n \r\n border_all\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showCustoms && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Customs)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Customs\r\n \r\n\r\n \r\n Customs Search\r\n \r\n
\r\n
\r\n \r\n policy\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {showAccounting && (\r\n \r\n
\r\n \r\n goToSection(ApplicationPaths.Accounting)\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n Accounting\r\n \r\n\r\n \r\n Accounting Search\r\n \r\n
\r\n
\r\n \r\n description\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n {displayDashboards && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Dashboard Views\r\n \r\n \r\n handleDashboardChange(e)\r\n }\r\n >\r\n {dashboardsList\r\n ? dashboardsList.map(\r\n dashboard => (\r\n \r\n {\r\n dashboard.dashboardName\r\n }\r\n \r\n )\r\n )\r\n : null}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n window.dashboard =\r\n embeddedDash\r\n }}\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Badge from '@material-ui/core/Badge'\r\nimport MailIcon from '@material-ui/icons/Mail'\r\nimport Room from '@material-ui/icons/Room'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n '& > *': {\r\n margin: theme.spacing(2)\r\n }\r\n }\r\n}))\r\n\r\nconst defaultProps = {\r\n color: 'primary',\r\n children: \r\n}\r\n\r\nexport default function MapBadge(props) {\r\n const classes = useStyles()\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n","export const checkValidPosition = position => {\r\n return (\r\n position !== null &&\r\n position !== '' &&\r\n !isNaN(position?.lat) &&\r\n !isNaN(position?.lng)\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { useGoogleMap } from '@react-google-maps/api'\r\nimport { checkValidPosition } from '../../utils/map'\r\n\r\nconst MapPolylines = ({ renderPolyline, uniqueRoutes, getLatLng }) => {\r\n const bounds = new window.google.maps.LatLngBounds()\r\n const daMap = useGoogleMap()\r\n\r\n useEffect(() => {\r\n uniqueRoutes.map(item => {\r\n if (\r\n item.geoLocationOrigin !== '' &&\r\n item.geoLocationDestination !== ''\r\n ) {\r\n const originCenter = getLatLng(item, 'geoLocationOrigin')\r\n const destinationCenter = getLatLng(\r\n item,\r\n 'geoLocationDestination'\r\n )\r\n\r\n if (\r\n !checkValidPosition(originCenter) ||\r\n !checkValidPosition(destinationCenter)\r\n ) {\r\n return false\r\n }\r\n\r\n bounds.extend(\r\n new window.google.maps.LatLng(\r\n originCenter.lat,\r\n originCenter.lng\r\n )\r\n )\r\n bounds.extend(\r\n new window.google.maps.LatLng(\r\n destinationCenter.lat,\r\n destinationCenter.lng\r\n )\r\n )\r\n }\r\n\r\n return true\r\n })\r\n\r\n if (bounds.isEmpty()) {\r\n bounds.extend(\r\n new window.google.maps.LatLng(42.2611071, -100.0855555)\r\n )\r\n daMap.fitBounds(bounds, 1)\r\n var listener = window.google.maps.event.addListener(\r\n daMap,\r\n 'idle',\r\n function () {\r\n if (daMap.getZoom() > 16) daMap.setZoom(3)\r\n window.google.maps.event.removeListener(listener)\r\n }\r\n )\r\n } else {\r\n daMap.fitBounds(bounds, 1)\r\n }\r\n }, [uniqueRoutes])\r\n\r\n return (\r\n <>\r\n {uniqueRoutes.map(item => {\r\n const originCenter = getLatLng(item, 'geoLocationOrigin')\r\n const destinationCenter = getLatLng(\r\n item,\r\n 'geoLocationDestination'\r\n )\r\n return renderPolyline(\r\n item.shipmentNumber,\r\n item,\r\n null,\r\n originCenter,\r\n destinationCenter,\r\n null,\r\n null,\r\n null\r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nexport default MapPolylines\r\n","import FlightIcon from '@material-ui/icons/Flight'\r\nimport DirectionsBoatIcon from '@mui/icons-material/DirectionsBoat'\r\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord'\r\nimport LocalShippingIcon from '@material-ui/icons/LocalShipping'\r\nimport { Polyline, OverlayView, OverlayViewF } from '@react-google-maps/api'\r\nimport React from 'react'\r\nimport MapBadge from './MapBadge'\r\nimport { CardMedia } from '@mui/material'\r\nimport { LoadScript, GoogleMap } from '@react-google-maps/api'\r\nimport { checkValidPosition } from '../../utils/map'\r\nimport MapPolylines from '../GoogleMaps/MapPolylines'\r\n\r\nconst arrowPath = 'M2,2 L5,8 L8,2'\r\nconst dashPath = 'M 0,-1 0,1'\r\n\r\nvar polylineLineSymbol = {\r\n path: dashPath,\r\n strokeOpacity: 1,\r\n scale: 2\r\n}\r\n\r\nconst getPixelPositionOffset = (width, height) => ({\r\n x: -(width / 2),\r\n y: -(height / 2)\r\n})\r\n\r\nconst getPortOverlay = (port, position) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst getCurrentLocationOverlay = position => {\r\n return (\r\n \r\n {getVesselCurrentLocationIcon()}\r\n \r\n )\r\n}\r\n\r\nconst getBulkPortMarkers = uniquePorts => {\r\n return uniquePorts.map(port => {\r\n return renderMarker(port.portName, port.port)\r\n })\r\n}\r\n\r\nconst getMapOverlay = (uniquePorts, uniqueItems) => {\r\n return (\r\n <>\r\n {getBulkPortMarkers(uniquePorts)}\r\n \r\n \r\n )\r\n}\r\n\r\nexport function renderMarker(badgeContent, position) {\r\n const positionObj = getLatLngFromString(position)\r\n return checkValidPosition(positionObj)\r\n ? getPortOverlay(badgeContent, positionObj)\r\n : null\r\n}\r\n\r\nexport function renderMap(items) {\r\n const mapContainerStyle = {\r\n position: 'relative',\r\n height: '100%',\r\n width: '100%'\r\n }\r\n\r\n // build a property we can use to look for duplicate locations\r\n const itemsLocMap = items.map(item => ({\r\n ...item,\r\n locCode: item.geoLocationOrigin + item.geoLocationDestination\r\n }))\r\n\r\n // build unique location array to speed up map render (markers)\r\n const uniqueItems = itemsLocMap.filter(\r\n (item, index, self) =>\r\n index ===\r\n self.findIndex(\r\n t =>\r\n t.locCode === item.locCode &&\r\n t.geoLocationOrigin !== '' &&\r\n t.geoLocationDestination !== ''\r\n )\r\n )\r\n\r\n // build unique list of origin and destination ports with names\r\n let uniquePorts = []\r\n uniqueItems.forEach(item => {\r\n if (item.geoLocationOrigin !== '') {\r\n if (\r\n uniquePorts.find(p => p.port === item.geoLocationOrigin) ===\r\n undefined\r\n ) {\r\n uniquePorts.push({\r\n port: item.geoLocationOrigin,\r\n portName: item.originPortCode || item.origin\r\n })\r\n }\r\n }\r\n if (item.geoLocationDestination !== '') {\r\n if (\r\n uniquePorts.find(\r\n p => p.port === item.geoLocationDestination\r\n ) === undefined\r\n ) {\r\n uniquePorts.push({\r\n port: item.geoLocationDestination,\r\n portName: item.destinationPortCode || item.destination\r\n })\r\n }\r\n }\r\n })\r\n\r\n return (\r\n \r\n {\r\n const bounds = new window.google.maps.LatLngBounds()\r\n\r\n bounds.extend(\r\n new window.google.maps.LatLng(42.2611071, -100.0855555)\r\n )\r\n var listener = window.google.maps.event.addListener(\r\n map,\r\n 'idle',\r\n function () {\r\n if (map.getZoom() > 16) map.setZoom(3)\r\n window.google.maps.event.removeListener(listener)\r\n }\r\n )\r\n\r\n map.fitBounds(bounds)\r\n }}\r\n >\r\n {uniquePorts.length > 0 &&\r\n getMapOverlay(uniquePorts, uniqueItems)}\r\n \r\n \r\n )\r\n}\r\n\r\nconst renderDetailMapInner = (\r\n itemIndex,\r\n item,\r\n itemextra,\r\n organization,\r\n height\r\n) => {\r\n if (item === null) {\r\n return null\r\n }\r\n\r\n const currLoc = getLatLng(itemextra, 'geoLocationCurrentLocation')\r\n const origin =\r\n getLatLng(item, 'geoLocationOrigin') ??\r\n getLatLng(itemextra, 'geoLocationOrigin')\r\n const destination =\r\n getLatLng(item, 'geoLocationDestination') ??\r\n getLatLng(itemextra, 'geoLocationDestination')\r\n const portOfLoading =\r\n getLatLng(itemextra, 'geoLocationPortOfLoading') ??\r\n getLatLng(item, 'geoLocationPortOfLoading')\r\n const portOfDischarge =\r\n getLatLng(itemextra, 'geoLocationPortOfDischarge') ??\r\n getLatLng(item, 'geoLocationPortOfDischarge')\r\n\r\n // default map\r\n return (\r\n {\r\n const bounds = new window.google.maps.LatLngBounds()\r\n if (\r\n bounds &&\r\n checkValidPosition(origin) &&\r\n checkValidPosition(destination)\r\n ) {\r\n bounds.extend(\r\n new window.google.maps.LatLng(origin.lat, origin.lng)\r\n )\r\n bounds.extend(\r\n new window.google.maps.LatLng(\r\n destination.lat,\r\n destination.lng\r\n )\r\n )\r\n map.fitBounds(bounds)\r\n }\r\n }}\r\n >\r\n {item !== null &&\r\n renderMarkers(\r\n itemIndex,\r\n item,\r\n itemextra,\r\n origin,\r\n destination,\r\n portOfLoading,\r\n portOfDischarge,\r\n currLoc\r\n )}\r\n \r\n )\r\n}\r\n\r\nexport const renderDetailMap = (\r\n itemIndex,\r\n item,\r\n itemextra,\r\n organization,\r\n height,\r\n source = 'page'\r\n) => {\r\n return source === 'page' ? (\r\n \r\n \r\n {renderDetailMapInner(\r\n itemIndex,\r\n item,\r\n itemextra,\r\n organization,\r\n height\r\n )}\r\n \r\n \r\n ) : (\r\n \r\n {renderDetailMapInner(\r\n itemIndex,\r\n item,\r\n itemextra,\r\n organization,\r\n height\r\n )}\r\n \r\n )\r\n}\r\n\r\nconst renderMarkers = (\r\n index,\r\n shipment,\r\n shipmentExtra,\r\n origin,\r\n destination,\r\n portOfLoading,\r\n portOfDischarge,\r\n currentLocation = null\r\n) => {\r\n var trackedArray = []\r\n var originToTrackedArray = []\r\n var trackedToDestinationArray = []\r\n\r\n if (!portOfLoading) {\r\n portOfLoading = origin\r\n }\r\n\r\n if (!portOfDischarge) {\r\n portOfDischarge = destination\r\n }\r\n\r\n if (\r\n shipmentExtra?.vesselCoordinates &&\r\n shipmentExtra?.vesselCoordinates.length > 0\r\n ) {\r\n trackedArray = shipmentExtra.vesselCoordinates\r\n\r\n // need to add values to the other arrays\r\n if (checkValidPosition(origin)) {\r\n originToTrackedArray.push(origin)\r\n }\r\n\r\n if (checkValidPosition(portOfLoading)) {\r\n originToTrackedArray.push(portOfLoading)\r\n }\r\n\r\n // add the first tracked position to the array\r\n originToTrackedArray.push(trackedArray[trackedArray.length - 1])\r\n\r\n // reverse\r\n originToTrackedArray = originToTrackedArray.reverse()\r\n\r\n if (checkValidPosition(destination)) {\r\n trackedToDestinationArray.push(destination)\r\n }\r\n\r\n if (checkValidPosition(portOfDischarge)) {\r\n trackedToDestinationArray.push(portOfDischarge)\r\n }\r\n\r\n // add the last tracked position to the array\r\n trackedToDestinationArray.push(trackedArray[0])\r\n } else {\r\n if (checkValidPosition(origin)) {\r\n trackedArray.push(origin)\r\n }\r\n\r\n if (checkValidPosition(portOfLoading)) {\r\n trackedArray.push(portOfLoading)\r\n }\r\n\r\n if (checkValidPosition(currentLocation)) {\r\n trackedArray.push(currentLocation)\r\n }\r\n\r\n if (checkValidPosition(portOfDischarge)) {\r\n trackedArray.push(portOfDischarge)\r\n }\r\n\r\n if (checkValidPosition(destination)) {\r\n trackedArray.push(destination)\r\n }\r\n }\r\n\r\n // remove any duplicate coordinates\r\n // array = array.filter(\r\n // (v, i, a) => a.findIndex(t => t.lat === v.lat && t.lng === v.lng) === i\r\n // )\r\n\r\n const options = {\r\n fillColor: '#757575',\r\n fillOpacity: 0,\r\n strokeColor: '#757575',\r\n strokeOpacity: 0,\r\n path: trackedArray,\r\n zIndex: 1,\r\n geodesic: true,\r\n icons: [\r\n {\r\n icon: polylineLineSymbol,\r\n offset: '0',\r\n repeat: '10px'\r\n }\r\n ]\r\n }\r\n\r\n if (\r\n (checkValidPosition(origin) || checkValidPosition(portOfLoading)) &&\r\n (checkValidPosition(destination) || checkValidPosition(portOfDischarge))\r\n ) {\r\n if (currentLocation == null) {\r\n return (\r\n
\r\n \r\n {checkValidPosition(origin) &&\r\n getPortOverlay(\r\n shipment.originPortCode ||\r\n shipment.origin ||\r\n shipmentExtra?.originPortCode,\r\n origin\r\n )}\r\n {checkValidPosition(portOfLoading) &&\r\n portOfLoading !== origin &&\r\n getPortOverlay(\r\n shipmentExtra?.portOfLoading ||\r\n shipment?.portOfLoading ||\r\n shipment?.loadPort ||\r\n shipmentExtra?.loadPort,\r\n portOfLoading\r\n )}\r\n {checkValidPosition(destination) &&\r\n getPortOverlay(\r\n shipment.destinationPortCode ||\r\n shipment.destination ||\r\n shipmentExtra?.destinationPortCode,\r\n destination\r\n )}\r\n {checkValidPosition(portOfDischarge) &&\r\n portOfDischarge !== destination &&\r\n getPortOverlay(\r\n shipmentExtra?.portOfDischarge ||\r\n shipment?.portOfDischarge ||\r\n shipment?.dischargePort ||\r\n shipmentExtra?.dischargePort,\r\n portOfDischarge\r\n )}\r\n
\r\n )\r\n } else {\r\n return (\r\n
\r\n \r\n \r\n \r\n {checkValidPosition(origin) &&\r\n getPortOverlay(\r\n shipment.originPortCode ||\r\n shipment.origin ||\r\n shipmentExtra?.originPortCode,\r\n origin\r\n )}\r\n {checkValidPosition(portOfLoading) &&\r\n portOfLoading !== origin &&\r\n getPortOverlay(\r\n shipmentExtra?.portOfLoading ||\r\n shipment?.portOfLoading ||\r\n shipment?.loadPort ||\r\n shipmentExtra?.loadPort,\r\n portOfLoading\r\n )}\r\n {checkValidPosition(currentLocation) &&\r\n getCurrentLocationOverlay(currentLocation)}\r\n {checkValidPosition(destination) &&\r\n getPortOverlay(\r\n shipment.destinationPortCode ||\r\n shipment.destination ||\r\n shipmentExtra?.destinationPortCode,\r\n destination\r\n )}\r\n {checkValidPosition(portOfDischarge) &&\r\n portOfDischarge !== destination &&\r\n getPortOverlay(\r\n shipmentExtra?.portOfDischarge ||\r\n shipment?.portOfDischarge ||\r\n shipment?.dischargePort ||\r\n shipmentExtra?.dischargePort,\r\n portOfDischarge\r\n )}\r\n
\r\n )\r\n }\r\n } else {\r\n if (checkValidPosition(currentLocation)) {\r\n return (\r\n checkValidPosition(currentLocation) &&\r\n getCurrentLocationOverlay(currentLocation)\r\n )\r\n }\r\n return
 
\r\n }\r\n}\r\n\r\nexport function renderPolyline(\r\n index,\r\n shipment,\r\n shipmentExtra,\r\n origin,\r\n destination,\r\n portOfLoading,\r\n portOfDischarge,\r\n currentLocation = null\r\n) {\r\n var array = []\r\n\r\n if (shipmentExtra?.vesselCoordinates) {\r\n array = shipmentExtra.vesselCoordinates\r\n } else {\r\n if (checkValidPosition(origin)) {\r\n array.push(origin)\r\n }\r\n\r\n if (checkValidPosition(portOfLoading)) {\r\n array.push(portOfLoading)\r\n }\r\n\r\n if (checkValidPosition(currentLocation)) {\r\n array.push(currentLocation)\r\n }\r\n\r\n if (checkValidPosition(portOfDischarge)) {\r\n array.push(portOfDischarge)\r\n }\r\n\r\n if (checkValidPosition(destination)) {\r\n array.push(destination)\r\n }\r\n }\r\n\r\n const options = {\r\n fillColor: '#757575',\r\n fillOpacity: 0,\r\n strokeColor: '#757575',\r\n strokeOpacity: 0,\r\n path: array,\r\n zIndex: 1,\r\n geodesic: true,\r\n icons: [\r\n {\r\n icon: polylineLineSymbol,\r\n offset: '0',\r\n repeat: '10px'\r\n }\r\n ]\r\n }\r\n\r\n if (\r\n (checkValidPosition(origin) || checkValidPosition(portOfLoading)) &&\r\n (checkValidPosition(destination) || checkValidPosition(portOfDischarge))\r\n ) {\r\n return \r\n } else {\r\n return null\r\n }\r\n}\r\n\r\nexport function getLatLng(shipment, key) {\r\n if (!shipment) {\r\n return null\r\n }\r\n\r\n const locationGeoCoordinates = shipment[key]\r\n if (!locationGeoCoordinates) {\r\n return null\r\n }\r\n\r\n const array = locationGeoCoordinates.split(',')\r\n return { lat: parseFloat(array[0]), lng: parseFloat(array[1]) }\r\n}\r\n\r\nfunction getLatLngFromString(positionString) {\r\n if (!positionString) {\r\n return null\r\n }\r\n\r\n const array = positionString.split(',')\r\n return { lat: parseFloat(array[0]), lng: parseFloat(array[1]) }\r\n}\r\n\r\nexport function getIconForShipment(shipment) {\r\n const shipmentMode = shipment.transportMode ?? shipment.mode\r\n if (shipmentMode) {\r\n if (shipmentMode == 'AIR') {\r\n return \r\n } else if (shipmentMode == 'ROA') {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n}\r\n\r\nconst getVesselCurrentLocationIcon = () => {\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport clsx from 'clsx'\r\nimport PropTypes from 'prop-types'\r\nimport { makeStyles } from '@material-ui/styles'\r\nimport { Card, CardContent, Grid } from '@material-ui/core'\r\nimport CountUp from 'react-countup'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n height: '100%',\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText,\r\n cursor: 'pointer'\r\n },\r\n content: {\r\n alignItems: 'center',\r\n display: 'flex'\r\n },\r\n avatar: {\r\n backgroundColor: theme.palette.white,\r\n color: theme.palette.primary.main,\r\n height: 56,\r\n width: 56\r\n },\r\n icon: {\r\n height: 32,\r\n width: 32\r\n }\r\n}))\r\n\r\nconst SummaryInfo = props => {\r\n const { title, data, className, isClicked, ...rest } = props\r\n const cardId = isClicked ? 'summary-tile-clicked' : null\r\n const cardTitleId = isClicked ? 'summary-tile-clicked-title' : null\r\n const cardValueId = isClicked ? 'summary-tile-clicked-value' : null\r\n const countUpEnd = data ? parseFloat(data.replace(/[^0-9.-]+/g, '')) : 0\r\n const countUpDecimals = data ? (data.substring(0, 1) === '$' ? 2 : 0) : 0\r\n const countUpPrefix = data ? (data.substring(0, 1) === '$' ? '$' : '') : ''\r\n\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {title}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nSummaryInfo.propTypes = {\r\n className: PropTypes.string\r\n}\r\n\r\nexport default SummaryInfo\r\n","export const sortData = (column, a, b) => {\r\n const sortField = column.sortField ? column.sortField : column.field\r\n\r\n if (column.type === 'Date') {\r\n return new Date(a[sortField]) - new Date(b[sortField])\r\n } else if (column.type === 'Float') {\r\n return Number.parseFloat(a[sortField]) - Number.parseFloat(b[sortField])\r\n } else if (column.type === 'Integer') {\r\n return (\r\n Number.parseInt(a[column.field]) - Number.parseInt(b[column.field])\r\n )\r\n } else {\r\n // assume string\r\n return ('' + a[sortField]).localeCompare(b[sortField])\r\n }\r\n}\r\n","import authService from '../components/api-authorization/AuthorizeService'\r\n\r\nexport async function getOrgViewCodeFromOrganization() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/Views/GetOrgViewCode', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (!data) {\r\n return null\r\n } else {\r\n return data\r\n }\r\n }\r\n}\r\n","import authService from '../api-authorization/AuthorizeService'\r\n\r\nexport async function retrieveView(clientId, viewCode) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/Views/GetView?viewCode=' +\r\n viewCode +\r\n (clientId ? '&clientId=' + clientId : ''),\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (!data) {\r\n return null\r\n } else {\r\n return data\r\n }\r\n }\r\n}\r\n\r\nexport async function retrievePageFields(pageCode, clientId = null) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n `api/Views/GetPageFields?pageCode=${pageCode}${clientId ? '&clientId=' + clientId : ''}`,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (!data) {\r\n return null\r\n } else {\r\n return data\r\n }\r\n }\r\n}\r\n\r\nexport async function updateAllViewColumnDefinitionMetaData() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/Views/UpdateAllColumnDefinitionMetaData',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: 'POST'\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nexport async function retrieveViewDefinitions(viewCode, clientId) {\r\n const token = await authService.getAccessToken()\r\n const clientIdParam = clientId ? '&clientId=' + clientId : ''\r\n const fetchURL = 'api/Views/GetViews?viewCode=' + viewCode + clientIdParam\r\n const response = await fetch(fetchURL, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (!data) {\r\n return null\r\n } else {\r\n return data\r\n }\r\n }\r\n}\r\n\r\nexport async function getClientViewsList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/Views/GetClientViews', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (!data) {\r\n return null\r\n } else {\r\n return data\r\n }\r\n }\r\n}\r\n\r\nexport async function saveUserView(viewCode, columnDefinitions) {\r\n const token = await authService.getAccessToken()\r\n const stringColumnDefs = JSON.stringify(columnDefinitions)\r\n const postDataObj = {\r\n viewCode: viewCode,\r\n columnDefinitions: btoa(stringColumnDefs)\r\n }\r\n fetch('api/Views/SaveUserView', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(postDataObj)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n // okay\r\n } else {\r\n // not okay\r\n }\r\n })\r\n .catch(e => {\r\n // not okay\r\n })\r\n}\r\n\r\nexport async function deleteView(view, handleSuccess, handleError, isUserView, clientId) {\r\n const token = await authService.getAccessToken()\r\n const postDataObj = {\r\n clientViewId: view.clientViewId,\r\n viewId: view.id,\r\n userId: view.userId,\r\n clientId: clientId\r\n }\r\n fetch(isUserView ? 'api/Views/DeleteUserView' : 'api/Views/DeleteView', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(postDataObj)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n // okay\r\n handleSuccess()\r\n } else {\r\n // get error message from response and pass to handleError\r\n const errorMessage = await response.text()\r\n handleError(errorMessage)\r\n }\r\n })\r\n .catch(e => {\r\n // not okay\r\n handleError(e)\r\n })\r\n}\r\n\r\nexport async function createView(viewName, isOrgview, clientId, viewCode, handleSuccess, handleError) {\r\n const token = await authService.getAccessToken()\r\n const postDataObj = {\r\n viewName: viewName,\r\n isOrgView: isOrgview,\r\n clientId: clientId,\r\n viewCode: viewCode\r\n }\r\n fetch('api/Views/CreateView', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(postDataObj)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n // okay\r\n handleSuccess()\r\n } else {\r\n // get error message from response and pass to handleError\r\n const errorMessage = await response.text()\r\n handleError(errorMessage)\r\n }\r\n })\r\n .catch(e => {\r\n // not okay\r\n handleError(e)\r\n })\r\n}\r\n\r\nexport async function updateUserViewAssignment(\r\n clientViewId,\r\n clientId,\r\n assignView = true,\r\n handleSuccess = () => {},\r\n handleError = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n const postDataObj = {\r\n clientViewId: clientViewId,\r\n clientId: clientId,\r\n assignView: assignView\r\n }\r\n\r\n await fetch('api/Views/UpdateUserViewAssignment', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(postDataObj)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n // okay\r\n handleSuccess('View assignment updated successfully')\r\n } else {\r\n // not okay\r\n const errorMessage = await response.text()\r\n handleError(errorMessage)\r\n }\r\n })\r\n .catch(e => {\r\n // not okay\r\n handleError(e)\r\n })\r\n}\r\n\r\nexport async function saveViewColumns(\r\n viewCode,\r\n columnDefinitions,\r\n viewId,\r\n clientViewId,\r\n isUserView,\r\n clientId,\r\n handleSuccess = () => {},\r\n handleError = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n const stringColumnDefs = JSON.stringify(columnDefinitions)\r\n const postDataObj = {\r\n viewCode: viewCode,\r\n id: viewId,\r\n clientViewId: clientViewId,\r\n columnDefinitions: btoa(stringColumnDefs),\r\n clientId: clientId\r\n }\r\n\r\n const apiURL = isUserView\r\n ? 'api/Views/SaveUserViewColumns'\r\n : 'api/Views/SaveViewColumns'\r\n await fetch(apiURL, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(postDataObj)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n // okay\r\n handleSuccess('View saved successfully')\r\n } else {\r\n // not okay\r\n const errorMessage = await response.text()\r\n handleError(errorMessage)\r\n }\r\n })\r\n .catch(e => {\r\n // not okay\r\n handleError(e)\r\n })\r\n}\r\n\r\nexport function getViewCodeBySearchItem(searchItem) {\r\n switch (searchItem) {\r\n case 'Shipments':\r\n return 'ShipmentSearchGrid'\r\n case 'Orders':\r\n return 'OrderSearchGrid'\r\n case 'OrderLines':\r\n return 'OrderLineSearchGrid'\r\n case 'Bookings':\r\n return 'BookingSearchGrid'\r\n case 'Customs':\r\n return 'CustomsSearchGrid'\r\n case 'Shipments':\r\n return 'ShipmentSearchGrid'\r\n case 'Accounting':\r\n return 'AccountingSearchGrid'\r\n case 'Container':\r\n return 'ContainerSearchGrid'\r\n }\r\n}\r\n\r\nexport function getViewNameBySearchItem(searchItem) {\r\n switch (searchItem) {\r\n case 'Shipments':\r\n return 'Shipment Search'\r\n case 'Orders':\r\n return 'Order Search'\r\n case 'OrderLines':\r\n return 'Order Line Search'\r\n case 'Bookings':\r\n return 'Booking Search'\r\n case 'Customs':\r\n return 'Customs Search'\r\n case 'Shipments':\r\n return 'Shipment Search'\r\n case 'Accounting':\r\n return 'Accounting Search'\r\n case 'Container':\r\n return 'Container Search'\r\n }\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport Grid from '@mui/material/Grid'\r\nimport List from '@mui/material/List'\r\nimport Card from '@mui/material/Card'\r\nimport CardHeader from '@mui/material/CardHeader'\r\nimport ListItem from '@mui/material/ListItem'\r\nimport ListItemText from '@mui/material/ListItemText'\r\nimport ListItemIcon from '@mui/material/ListItemIcon'\r\nimport ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction'\r\nimport Checkbox from '@mui/material/Checkbox'\r\nimport Button from '@mui/material/Button'\r\nimport Divider from '@mui/material/Divider'\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'\r\nimport {\r\n retrieveViewDefinitions,\r\n saveViewColumns,\r\n updateUserViewAssignment,\r\n createView,\r\n deleteView,\r\n updateAllViewColumnDefinitionMetaData,\r\n retrieveView\r\n} from './Views'\r\nimport { createTheme, ThemeProvider } from '@mui/material/styles'\r\nimport { useEffect } from 'react'\r\nimport { Select, MenuItem, InputLabel } from '@material-ui/core'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { clientUserHasPermission } from '../../utils/permissions'\r\n\r\nfunction not(a, b) {\r\n return a.filter(value => b.indexOf(value) === -1)\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter(value => b.indexOf(value) !== -1)\r\n}\r\n\r\nfunction union(a, b) {\r\n return [...a, ...not(b, a)]\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120\r\n },\r\n docTypeSelect: {},\r\n root: {\r\n width: '100%',\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n editColumnTextField: {\r\n width: '40ch'\r\n }\r\n}))\r\n\r\nexport default function TableViewManagementDialog(props) {\r\n const classes = useStyles()\r\n const [open, setOpen] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [successMessage, setSuccessMessage] = React.useState('View Saved!')\r\n const [isCreateSuccess, setIsCreateSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [creatingView, setCreatingView] = React.useState(false)\r\n const [isCreateViewError, setIsCreateViewError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [createViewErrorMessage, setCreateViewErrorMessage] =\r\n React.useState('')\r\n const [tableView, setTableView] = React.useState(null)\r\n const [hiddenColumns, setHiddenColumns] = React.useState([])\r\n const [visibleColumns, setVisibleColumns] = React.useState([])\r\n const [selectedColumn, setSelectedColumn] = React.useState('')\r\n const [changesMade, setChangesMade] = React.useState(false)\r\n const [adminUser, setAdminUser] = React.useState(false)\r\n const [superAdminUser, setSuperAdminUser] = React.useState(false)\r\n const [isViewManager, setIsViewManager] = React.useState(false)\r\n const [checked, setChecked] = React.useState([])\r\n const [selectedView, setSelectedView] = React.useState(null)\r\n const [allViews, setAllViews] = React.useState([])\r\n const [promptForViewName, setPromptForViewName] = React.useState(false)\r\n const [editColumnDialogOpen, setEditColumnDialogOpen] = React.useState(false)\r\n const [addColumnDialog, setAddColumnDialog] = React.useState(false)\r\n const [appliedViewId, setAppliedViewId] = React.useState(null)\r\n\r\n useEffect(() => {\r\n async function fetchIsAdmin() {\r\n const userIsAdmin = await authService.isAdmin()\r\n const userIsSuperAdmin = await authService.isSuperAdmin()\r\n setAdminUser(userIsAdmin || userIsSuperAdmin)\r\n setSuperAdminUser(userIsSuperAdmin)\r\n }\r\n fetchIsAdmin()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.clientId) {\r\n async function fetchViewManager() {\r\n const userHasPermission = await clientUserHasPermission(\r\n props.clientId,\r\n 'manageviews'\r\n )\r\n setIsViewManager(userHasPermission)\r\n }\r\n fetchViewManager()\r\n }\r\n }, [props.clientId])\r\n\r\n const { palette } = createTheme()\r\n const theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: props.backgroundColor,\r\n contrastText: props.fontColor\r\n }\r\n }\r\n })\r\n\r\n const loadColumnHeaders = viewData => {\r\n const columnHeaders = viewData.columnDefinitionsArray\r\n // need to set visible and hidden column arrays based on the 'visible' property of the data\r\n // set visible columns\r\n const visibleColumns = columnHeaders?.filter(\r\n column => column.visible === true\r\n )\r\n setVisibleColumns(visibleColumns)\r\n // set hidden columns\r\n const hiddenColumns = columnHeaders?.filter(\r\n column => column.visible === false\r\n )\r\n setHiddenColumns(hiddenColumns)\r\n setTableView(columnHeaders)\r\n }\r\n\r\n const fetchTableViews = async () => {\r\n setIsLoading(true)\r\n const currentUserView = await retrieveView(\r\n props.clientId,\r\n props.viewCode\r\n )\r\n const data = await retrieveViewDefinitions(\r\n props.viewCode,\r\n props.clientId\r\n )\r\n\r\n if (!data) {\r\n setIsLoading(false)\r\n handleError('View not found.')\r\n } else {\r\n setAllViews(data)\r\n if (data.length > 0) {\r\n let currentViewById = data.find(\r\n view => view.id === currentUserView.id\r\n )\r\n if (currentViewById) {\r\n setSelectedView(currentViewById)\r\n setAppliedViewId(currentViewById.id)\r\n loadColumnHeaders(currentViewById)\r\n } else {\r\n let currentViewByClientViewId = data.find(\r\n view =>\r\n view.clientViewId === currentUserView.clientViewId\r\n )\r\n if (currentViewByClientViewId) {\r\n setSelectedView(currentViewByClientViewId)\r\n setAppliedViewId(currentViewByClientViewId.id)\r\n loadColumnHeaders(currentViewByClientViewId)\r\n } else {\r\n // shouldn't land here... but if it does, just set the first view in the list\r\n setSelectedView(data[0])\r\n loadColumnHeaders(data[0])\r\n }\r\n }\r\n }\r\n setIsLoading(false)\r\n }\r\n }\r\n\r\n const handleViewNameClose = () => {\r\n setPromptForViewName(false)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleViewNameSave = async () => {\r\n setCreatingView(true)\r\n const viewName = document.getElementById('viewName').value\r\n if (viewName === '') {\r\n alert('Please provide a name for the new view.')\r\n return\r\n }\r\n await createView(\r\n viewName,\r\n handleCreateViewSuccess,\r\n handleCreateViewError\r\n )\r\n }\r\n\r\n const renderAddColumnDialog = () => {\r\n return (\r\n setAddColumnDialog(false)}\r\n >\r\n Add Column\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n setAddColumnDialog(false)}\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const handleAddColumn = () => {\r\n const columnTitle = document.getElementById('newColumnTitle').value\r\n const columnValue = document.getElementById('newColumnValue').value\r\n const columnType = document.getElementById('newColumnType').value\r\n const columnSortField =\r\n document.getElementById('newColumnSortField').value\r\n\r\n const newColumn = {\r\n id: '00000000-0000-0000-0000-000000000000',\r\n title: columnTitle,\r\n value: columnValue,\r\n type: columnType,\r\n sortField: columnSortField,\r\n visible: false\r\n }\r\n\r\n setHiddenColumns([...hiddenColumns, newColumn])\r\n setAddColumnDialog(false)\r\n setChangesMade(true)\r\n }\r\n\r\n const handleDrop = droppedItem => {\r\n setChangesMade(true)\r\n // Ignore drop outside droppable container\r\n if (!droppedItem.destination) return\r\n var updatedList = [...visibleColumns]\r\n // Remove dragged item\r\n const [reorderedItem] = updatedList.splice(droppedItem.source.index, 1)\r\n // Add dropped item\r\n updatedList.splice(droppedItem.destination.index, 0, reorderedItem)\r\n // Update State\r\n setVisibleColumns(updatedList)\r\n }\r\n\r\n const handleCustomizeClickOpen = async () => {\r\n await fetchTableViews()\r\n setOpen(true)\r\n }\r\n\r\n const handleCreateClickOpen = async () => {\r\n setPromptForViewName(true)\r\n }\r\n\r\n const handleClose = () => {\r\n if (changesMade) {\r\n if (!window.confirm('Cancel without saving changes?')) {\r\n return\r\n } else {\r\n setChangesMade(false)\r\n }\r\n }\r\n setIsError(false)\r\n setErrorMessage('')\r\n setIsSuccess(false)\r\n setOpen(false)\r\n }\r\n\r\n const handleSuccess = successMessage => {\r\n setChangesMade(false)\r\n setSuccessMessage(successMessage)\r\n setIsSuccess(true)\r\n setInterval(function () {\r\n // call callback function passed in from props\r\n props.successCallback()\r\n setIsSuccess(false)\r\n }, 3000)\r\n }\r\n\r\n const handleCreateViewSuccess = () => {\r\n setIsCreateSuccess(true)\r\n setInterval(function () {\r\n // call callback function passed in from props\r\n props.successCallback()\r\n setIsCreateSuccess(false)\r\n setPromptForViewName(false)\r\n setCreatingView(false)\r\n }, 3000)\r\n }\r\n\r\n const updateViewMetaData = async () => {\r\n setIsLoading(true)\r\n var result = await updateAllViewColumnDefinitionMetaData()\r\n setIsLoading(false)\r\n if (result) {\r\n setIsSuccess(true)\r\n setSuccessMessage('View Metadata Updated!')\r\n } else {\r\n handleError('Error updating view metadata.')\r\n }\r\n }\r\n\r\n const handleDeleteError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleDeleteSuccess = () => {\r\n setIsLoading(false)\r\n handleSuccess('View Deleted!')\r\n fetchTableViews()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const handleCreateViewError = errorMessage => {\r\n setCreateViewErrorMessage(errorMessage)\r\n setIsCreateViewError(true)\r\n setCreatingView(false)\r\n }\r\n\r\n const handleSave = async () => {\r\n await handleSubmission()\r\n }\r\n\r\n const handleAssignUnassignView = async (assignView) => {\r\n setIsLoading(true)\r\n await updateUserViewAssignment(\r\n selectedView?.clientViewId,\r\n props.clientId,\r\n assignView,\r\n handleSuccess,\r\n handleError\r\n )\r\n fetchTableViews()\r\n setIsLoading(false)\r\n }\r\n\r\n const handleSubmission = async () => {\r\n setIsLoading(true)\r\n const allColumns = [...visibleColumns, ...hiddenColumns]\r\n const isUserView = selectedView?.userId ? true : false\r\n await saveViewColumns(\r\n props.viewCode,\r\n allColumns,\r\n selectedView?.id,\r\n selectedView?.clientViewId,\r\n isUserView,\r\n props.clientId,\r\n handleSuccess,\r\n handleError\r\n )\r\n setIsLoading(false)\r\n }\r\n\r\n const handleEditColumnDialogClose = () => {\r\n setEditColumnDialogOpen(false)\r\n }\r\n\r\n const handleDeleteColumn = (item) => {\r\n // find the column in the visible or hidden columns\r\n const updatedVisibleColumns = visibleColumns.filter(\r\n column => column.value !== item.value\r\n )\r\n\r\n const updatedHiddenColumns = hiddenColumns.filter(\r\n column => column.value !== item.value\r\n )\r\n\r\n setVisibleColumns(updatedVisibleColumns)\r\n setHiddenColumns(updatedHiddenColumns)\r\n\r\n setChangesMade(true)\r\n }\r\n\r\n const handleEditColumnDialogSubmission = () => {\r\n // need to update the column name and other properties\r\n // need to update the state of the visible and hidden columns\r\n // need to close the dialog\r\n // need to set changes made to true\r\n\r\n // get the values from the text fields\r\n const columnTitle = document.getElementById('editColumnTitle').value\r\n const columnValue = document.getElementById('editColumnValue').value\r\n const columnType = document.getElementById('editColumnType').value\r\n const columnSortField = document.getElementById(\r\n 'editColumnSortField'\r\n ).value\r\n\r\n // find the column in the visible or hidden columns\r\n const updatedVisibleColumns = visibleColumns.map(column => {\r\n if (column.value === selectedColumn.value) {\r\n column.title = columnTitle\r\n column.value = columnValue\r\n column.type = columnType\r\n column.sortField = columnSortField\r\n }\r\n return column\r\n })\r\n\r\n const updatedHiddenColumns = hiddenColumns.map(column => {\r\n if (column.value === selectedColumn.value) {\r\n column.title = columnTitle\r\n column.value = columnValue\r\n column.type = columnType\r\n column.sortField = columnSortField\r\n }\r\n return column\r\n })\r\n\r\n setVisibleColumns(updatedVisibleColumns)\r\n setHiddenColumns(updatedHiddenColumns)\r\n\r\n setEditColumnDialogOpen(false)\r\n setChangesMade(true)\r\n }\r\n\r\n const renderColumnHeaderEditDialog = () => {\r\n // need to render a new dialog to show when the user clicks the edit icon on a specific column\r\n // this dialog will allow the user to change the column name and other properties\r\n // the dialog will have a text field for the column name, a checkbox for visible, and a checkbox for required\r\n // the dialog will have a save and cancel button\r\n // the dialog will have a delete button if the column is not required\r\n // the dialog will have a close button\r\n\r\n return (\r\n \r\n Edit Column Properties\r\n \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 Save\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const handleDelete = async () => {\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to delete this view? \\nAny clients assigned to this view will be reassigned the default view.'\r\n )\r\n ) {\r\n return\r\n }\r\n setIsLoading(true)\r\n await deleteView(\r\n selectedView,\r\n handleDeleteSuccess,\r\n handleDeleteError,\r\n false,\r\n props.clientId\r\n )\r\n }\r\n\r\n const handleReset = async () => {\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to reset your view? \\nThis will revert your view to the default view.'\r\n )\r\n ) {\r\n return\r\n }\r\n setIsLoading(true)\r\n await deleteView(\r\n selectedView,\r\n handleDeleteSuccess,\r\n handleDeleteError,\r\n true,\r\n props.clientId\r\n )\r\n }\r\n\r\n const leftChecked = intersection(checked, hiddenColumns)\r\n const rightChecked = intersection(checked, visibleColumns)\r\n\r\n const handleToggle = value => () => {\r\n const currentIndex = checked.indexOf(value)\r\n const newChecked = [...checked]\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value)\r\n } else {\r\n newChecked.splice(currentIndex, 1)\r\n }\r\n\r\n setChecked(newChecked)\r\n }\r\n\r\n const numberOfChecked = items => intersection(checked, items).length\r\n\r\n const handleToggleAll = items => () => {\r\n if (numberOfChecked(items) === items.length) {\r\n setChecked(not(checked, items))\r\n } else {\r\n setChecked(union(checked, items))\r\n }\r\n }\r\n\r\n const handleCheckedRight = () => {\r\n setChangesMade(true)\r\n const leftCheckedUpdated = leftChecked.map(item => {\r\n item.visible = true\r\n return item\r\n })\r\n setVisibleColumns(leftCheckedUpdated.concat(visibleColumns))\r\n setHiddenColumns(not(hiddenColumns, leftChecked))\r\n setChecked(not(checked, leftChecked))\r\n }\r\n\r\n const handleCheckedLeft = () => {\r\n setChangesMade(true)\r\n const rightCheckedUpdated = rightChecked.map(item => {\r\n item.visible = false\r\n return item\r\n })\r\n\r\n setHiddenColumns(hiddenColumns.concat(rightCheckedUpdated))\r\n setVisibleColumns(not(visibleColumns, rightChecked))\r\n setChecked(not(checked, rightChecked))\r\n }\r\n\r\n const handleViewSelectChange = name => {\r\n if (changesMade) {\r\n if (!window.confirm('Cancel without saving changes?')) {\r\n return\r\n }\r\n }\r\n\r\n const selectedView = allViews.find(view => view.viewName === name)\r\n loadColumnHeaders(selectedView)\r\n setSelectedView(selectedView)\r\n setChangesMade(false)\r\n }\r\n\r\n const renderViewSelect = () => {\r\n return (\r\n <>\r\n Select View\r\n handleViewSelectChange(e.target.value)}\r\n >\r\n {allViews\r\n ? allViews.map(function (view, i) {\r\n const isCurrentView =\r\n (view.id && view.id === appliedViewId)\r\n return (\r\n \r\n {view.viewName}\r\n \r\n )\r\n })\r\n : null}\r\n \r\n \r\n )\r\n }\r\n\r\n const customList = (title, items) => (\r\n \r\n \r\n }\r\n title={title}\r\n subheader={`${numberOfChecked(items)}/${\r\n items?.length\r\n } selected`}\r\n />\r\n \r\n \r\n \r\n {provided => (\r\n \r\n {items?.map((item, index) => {\r\n const labelId = `transfer-list-all-item-${item.value}-label`\r\n\r\n return (\r\n \r\n {provided => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {superAdminUser && (\r\n <>\r\n \r\n {\r\n setSelectedColumn(\r\n item\r\n )\r\n setEditColumnDialogOpen(\r\n true\r\n )\r\n }}\r\n >\r\n \r\n \r\n {\r\n handleDeleteColumn(item)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\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 Customize Views\r\n \r\n \r\n \r\n {'Customize Columns: ' + props.viewName}\r\n \r\n \r\n {isLoading && }\r\n {\r\n \r\n \r\n {customList('Hidden Columns', hiddenColumns)}\r\n \r\n \r\n \r\n \r\n Add >\r\n \r\n \r\n < Remove\r\n \r\n {superAdminUser && (\r\n {\r\n setAddColumnDialog(true)\r\n }}\r\n aria-label=\"add column\"\r\n >\r\n New +\r\n \r\n )}\r\n \r\n \r\n \r\n {customList('Visible Columns', visibleColumns)}\r\n \r\n \r\n }\r\n \r\n \r\n {\r\n allViews.length > 1 || adminUser ?\r\n renderViewSelect()\r\n : null\r\n }\r\n {(adminUser || isViewManager) && allViews.length > 1 && !selectedView?.userId && (\r\n \r\n Delete\r\n \r\n )}\r\n \r\n Reset\r\n \r\n {\r\n {\r\n handleAssignUnassignView(selectedView?.id !== appliedViewId)\r\n }}\r\n >\r\n {\r\n selectedView?.id === appliedViewId ?\r\n 'Deactivate'\r\n :\r\n 'Activate'\r\n }\r\n \r\n\r\n }\r\n \r\n Cancel\r\n \r\n \r\n Save\r\n \r\n \r\n \r\n {isSuccess && (\r\n \r\n {successMessage}\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n \r\n \r\n \r\n Enter New View Name\r\n \r\n \r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n Save\r\n \r\n \r\n {isCreateSuccess && (\r\n \r\n View Created!\r\n \r\n )}\r\n {isCreateViewError && (\r\n {\r\n setIsCreateViewError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {createViewErrorMessage}\r\n \r\n )}\r\n \r\n {renderColumnHeaderEditDialog()}\r\n {renderAddColumnDialog()}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport Button from '@mui/material/Button'\r\nimport { createView } from './Views'\r\nimport { createTheme } from '@mui/material/styles'\r\nimport { useEffect } from 'react'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { clientUserHasPermission } from '../../utils/permissions'\r\nimport Checkbox from '@material-ui/core/Checkbox'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120\r\n },\r\n docTypeSelect: {},\r\n root: {\r\n width: '100%',\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n editColumnTextField: {\r\n width: '40ch'\r\n }\r\n}))\r\n\r\nexport default function TableViewCreateDialog(props) {\r\n const classes = useStyles()\r\n const [isCreateSuccess, setIsCreateSuccess] = React.useState(false)\r\n const [creatingView, setCreatingView] = React.useState(false)\r\n const [isCreateViewError, setIsCreateViewError] = React.useState(false)\r\n const [createViewErrorMessage, setCreateViewErrorMessage] =\r\n React.useState('')\r\n const [adminUser, setAdminUser] = React.useState(false)\r\n const [promptForViewName, setPromptForViewName] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isViewManager, setIsViewManager] = React.useState(false)\r\n const [isOrgView, setIsOrgView] = React.useState(true)\r\n\r\n useEffect(() => {\r\n async function fetchIsAdmin() {\r\n const userIsAdmin = await authService.isAdmin()\r\n const userIsSuperAdmin = await authService.isSuperAdmin()\r\n setAdminUser(userIsAdmin || userIsSuperAdmin)\r\n }\r\n fetchIsAdmin()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.clientId) {\r\n async function fetchIsViewManager() {\r\n const userHasPermission = await clientUserHasPermission(\r\n props.clientId,\r\n 'manageviews'\r\n )\r\n setIsViewManager(userHasPermission)\r\n }\r\n fetchIsViewManager()\r\n }\r\n }, [props.clientId])\r\n\r\n const { palette } = createTheme()\r\n const theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: props.backgroundColor,\r\n contrastText: props.fontColor\r\n }\r\n }\r\n })\r\n\r\n const handleCreateViewClose = () => {\r\n setPromptForViewName(false)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleCreateViewSave = async () => {\r\n setCreatingView(true)\r\n const viewName = document.getElementById('viewName').value\r\n if (viewName === '') {\r\n alert('Please provide a name for the new view.')\r\n return\r\n }\r\n await createView(\r\n viewName,\r\n (isViewManager && !adminUser) ? false : isOrgView,\r\n props.clientId,\r\n props.viewCode,\r\n handleCreateViewSuccess,\r\n handleCreateViewError\r\n )\r\n }\r\n\r\n const handleCreateClickOpen = async () => {\r\n setPromptForViewName(true)\r\n setIsOrgView(true)\r\n }\r\n\r\n const handleCreateViewSuccess = () => {\r\n setIsCreateSuccess(true)\r\n setInterval(function () {\r\n // call callback function passed in from props\r\n setIsCreateSuccess(false)\r\n setPromptForViewName(false)\r\n setCreatingView(false)\r\n }, 3000)\r\n }\r\n\r\n const handleCreateViewError = errorMessage => {\r\n setCreateViewErrorMessage(errorMessage)\r\n setIsCreateViewError(true)\r\n setCreatingView(false)\r\n }\r\n\r\n return (\r\n <>\r\n {(adminUser || isViewManager) && (\r\n \r\n \r\n Create View\r\n \r\n )}\r\n \r\n New View Details\r\n \r\n

View Name

\r\n \r\n {adminUser && (\r\n <>\r\n

Organization View (all clients/modules)

\r\n setIsOrgView(e.target.checked)} />\r\n

Client View (specific to this client/module)

\r\n setIsOrgView(!e.target.checked)} />\r\n \r\n )}\r\n
\r\n \r\n \r\n Cancel\r\n \r\n \r\n Save\r\n \r\n \r\n {isCreateSuccess && (\r\n \r\n View Created!\r\n \r\n )}\r\n {isCreateViewError && (\r\n {\r\n setIsCreateViewError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {createViewErrorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import authService from '../api-authorization/AuthorizeService'\r\n\r\nexport async function getContainerExtraData(\r\n shipmentData,\r\n containerNumber,\r\n clientId\r\n) {\r\n const queryString = require('query-string')\r\n const qs = {\r\n ClientId: clientId,\r\n ShipmentSearchNumber: shipmentData.shipmentNumber\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const shipmentExtraResponse = await fetch(\r\n `api/shipments/getcontainerextra?` + queryString.stringify(qs),\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (shipmentExtraResponse.ok) {\r\n const shipmentExtra = await shipmentExtraResponse.json()\r\n\r\n if (!shipmentExtra) {\r\n return null\r\n }\r\n\r\n var container = shipmentExtra.containers.find(\r\n c => c.containerNumber === containerNumber\r\n )\r\n\r\n if (!container) {\r\n return null\r\n }\r\n\r\n // need to add routing info to container\r\n container.vesselCoordinates = shipmentExtra.vesselCoordinates\r\n container.routingInfo = shipmentExtra.routingInfo\r\n\r\n // need to add geolocation info to container\r\n container.geoLocationOrigin = shipmentData.geoLocationOrigin\r\n container.geoLocationDestination = shipmentData.geoLocationDestination\r\n container.geoLocationPortOfLoading =\r\n shipmentData.geoLocationPortOfLoading\r\n container.geoLocationPortOfDischarge =\r\n shipmentData.geoLocationPortOfDischarge\r\n container.geoLocationCurrentLocation =\r\n shipmentExtra.geoLocationCurrentLocation\r\n container.origin = shipmentData.origin\r\n container.destination = shipmentData.destination\r\n\r\n return container\r\n } else {\r\n return null\r\n }\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport CardTitle from './CardTitle'\r\nimport { renderTable } from './TableHelper'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { retrieveView } from './Views'\r\n\r\nexport default function ShipmentRoutingCard(props) {\r\n const [routingColumns, setRoutingColumns] = useState([])\r\n const { shipment, clientId } = props\r\n\r\n useEffect(() => {\r\n getRoutingColumns()\r\n }, [])\r\n\r\n const useStyles = makeStyles(theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n }))\r\n\r\n const classes = useStyles()\r\n\r\n const getRoutingColumns = async () => {\r\n const view = await retrieveView(clientId, 'ShipmentRoutingDetails')\r\n let routingColumnData = []\r\n\r\n if (!view) {\r\n routingColumnData = [\r\n { key: 'transportMode', label: 'Transport Mode', icon: false },\r\n { key: 'legNumber', label: 'Leg #', icon: false },\r\n { key: 'legType', label: 'Leg Type', icon: false },\r\n { key: 'vesselName', label: 'Vessel Name', icon: false },\r\n { key: 'voyageFlight', label: 'Voyage Flight', icon: false },\r\n { key: 'loadPort', label: 'Load Port', icon: false },\r\n { key: 'dischargePort', label: 'Discharge Port', icon: false },\r\n { key: 'etd', label: 'ETD', icon: false },\r\n { key: 'atd', label: 'ATD', icon: false },\r\n { key: 'eta', label: 'ETA', icon: false },\r\n { key: 'ata', label: 'ATA', icon: false },\r\n { key: 'consolMode', label: 'Consol Mode', icon: false },\r\n { key: 'masterBillNumber', label: 'Master Bill', icon: false },\r\n { key: 'vesselLloydsIMO', label: 'IMO Number', icon: false }\r\n ]\r\n } else {\r\n // need to map value to key and title to label and icon = false\r\n routingColumnData = view.columnDefinitionsArray.map((item) => {\r\n return {\r\n key: item.value,\r\n label: item.title,\r\n icon: false\r\n }})\r\n }\r\n\r\n setRoutingColumns(routingColumnData)\r\n }\r\n\r\n return (\r\n \r\n {renderTable(\r\n shipment?.routingInfo ?? [],\r\n routingColumns,\r\n 'routing',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Dialog, DialogTitle, DialogContent } from '@material-ui/core'\r\nimport { Grid, Typography, IconButton } from '@material-ui/core'\r\nimport { Close } from '@material-ui/icons'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../components/shared/TableHelper'\r\nimport { renderDetailMap } from '../components/shared/MapHelper'\r\nimport { retrieveView } from './shared/Views'\r\nimport { Link, Button } from '@material-ui/core'\r\nimport ShipmentRoutingCard from './shared/ShipmentRoutingCard'\r\nimport { getContainerOrderLines } from '../api/api'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport { getOrgViewCodeFromOrganization } from '../utils/organizations'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n}))\r\n\r\nconst milestones = [\r\n { key: 'description', label: 'Description', icon: true },\r\n { key: 'estimatedDate', label: 'Estimate', icon: false },\r\n { key: 'actualDate', label: 'Actual', icon: false }\r\n]\r\n\r\nexport default function DialogContainer(props) {\r\n const [dialogContainerHeaders, setDialogContainerHeaders] = useState([])\r\n const [containerOrderLines, setContainerOrderLines] = useState([])\r\n const [productsLoading, setProductsLoading] = useState(false)\r\n const [packedItemHeaders, setPackedItemHeaders] = useState([])\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n\r\n const {\r\n container,\r\n organization,\r\n client,\r\n shipment = null,\r\n shipmentExtra = null,\r\n showDialog,\r\n dialogCallback\r\n } = props\r\n const classes = useStyles()\r\n\r\n useEffect(() => {\r\n getContainerDialogContainerHeaders()\r\n getContainerPackedItemHeaders()\r\n getOrgViewCode()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (container && shipment) {\r\n setProductsLoading(true)\r\n getContainerOrderLines(\r\n container.containerNumber,\r\n shipment.shipmentNumber,\r\n client.id,\r\n handleContainerOrderLinesSuccess,\r\n handleContainerOrderLineFailure\r\n )\r\n }\r\n }, [container, shipment])\r\n\r\n const getContainerPackedItemHeaders = async () => {\r\n const view = await retrieveView(null, 'ContainerPackedItems')\r\n if (view) {\r\n setPackedItemHeaders(view.columnDefinitionsArray)\r\n }\r\n }\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n const handleContainerOrderLinesSuccess = data => {\r\n if (data) {\r\n setContainerOrderLines(data)\r\n } else {\r\n setContainerOrderLines(container.packedItems)\r\n }\r\n setProductsLoading(false)\r\n }\r\n\r\n const handleContainerOrderLineFailure = () => {\r\n setProductsLoading(false)\r\n }\r\n\r\n const getContainerDialogContainerHeaders = async () => {\r\n const view = await retrieveView(null, 'ShipmentContainerDetails')\r\n if (view) {\r\n let containerHeaders = view.columnDefinitionsArray\r\n // need to map value and title properties to key and label and add icon and link properties\r\n containerHeaders.forEach(header => {\r\n header.key = header.value\r\n header.label = header.title\r\n header.icon = false\r\n header.link = false\r\n })\r\n // filter out headers where visible property is false\r\n containerHeaders = containerHeaders.filter(header => header.visible)\r\n // remove containerTrackingLink column if organization does not have containerTrackingURL\r\n if (!organization?.containerTrackingURL) {\r\n containerHeaders = containerHeaders.filter(\r\n c => c.key !== 'containerTrackingLink'\r\n )\r\n }\r\n // set link true if key is containerTrackingLink\r\n containerHeaders.forEach(header => {\r\n if (header.key === 'containerTrackingLink') {\r\n header.link = true\r\n }\r\n })\r\n setDialogContainerHeaders(containerHeaders)\r\n }\r\n }\r\n\r\n if (!showDialog) return null\r\n\r\n const renderContainerLink = (i, index, arrayKey) => {\r\n if (\r\n arrayKey.key === 'containerTrackingLink' &&\r\n organization.containerTrackingURL\r\n ) {\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n i['containerNumber']\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n View\r\n \r\n )\r\n }\r\n\r\n if (\r\n arrayKey.key === 'openTrackLink' &&\r\n (client.isOpenTrack || organization.isOpenTrack)\r\n ) {\r\n return (\r\n // check if value is null\r\n i[arrayKey.key] !== null && i[arrayKey.key] !== '' ? (\r\n {\r\n const newWindow = window.open(\r\n i[arrayKey.key],\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n View\r\n \r\n ) : (\r\n \r\n )\r\n )\r\n }\r\n }\r\n\r\n // const getContainerPackedItems = () => {\r\n // return container.packedItems || containerOrderLines\r\n // }\r\n\r\n const renderPackedItems = () => {\r\n const filteredPackedItemHeaders = packedItemHeaders.map(header => ({\r\n key: header.value,\r\n label: header.title,\r\n icon: false\r\n }))\r\n\r\n return (\r\n \r\n {productsLoading ? (\r\n \r\n ) : (\r\n renderTable(\r\n containerOrderLines,\r\n filteredPackedItemHeaders,\r\n 'packedItems',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '350px'\r\n }\r\n )\r\n )}\r\n \r\n )\r\n }\r\n\r\n const renderMilestones = container => {\r\n var sortedMilestones = container.milestones.concat(container.consolMilestones)\r\n sortedMilestones.sort((a, b) => {\r\n // sort by sequence property\r\n return a.sequence - b.sequence\r\n })\r\n return (\r\n \r\n {renderTable(\r\n sortedMilestones,\r\n milestones,\r\n 'milestones',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '350px'\r\n }\r\n )}\r\n \r\n )\r\n }\r\n\r\n const renderDetails = container => {\r\n return (\r\n \r\n {renderTable(\r\n [container],\r\n dialogContainerHeaders,\r\n 'Details',\r\n classes,\r\n renderContainerLink,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n )\r\n }\r\n\r\n return (\r\n dialogCallback(false)}\r\n >\r\n \r\n
\r\n dialogCallback(false)}>\r\n \r\n \r\n
\r\n
\r\n \r\n {' '}\r\n Container Details | {container?.containerNumber}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {renderDetailMap(\r\n container?.containerNumber,\r\n container,\r\n shipmentExtra,\r\n null,\r\n '400px',\r\n 'dialog'\r\n )}\r\n \r\n {(container?.routingInfo || shipmentExtra?.routingInfo) && (\r\n \r\n \r\n \r\n )}\r\n \r\n {renderDetails(container)}\r\n \r\n \r\n {renderPackedItems(container)}\r\n \r\n \r\n {renderMilestones(container)}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import Papa from 'papaparse'\r\nimport moment from 'moment'\r\n\r\nconst exportCsv = (data, filename) => {\r\n const csv = Papa.unparse({ data })\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\r\n const url = URL.createObjectURL(blob)\r\n const link = document.createElement('a')\r\n link.setAttribute('href', url)\r\n link.setAttribute('download', filename)\r\n link.style.visibility = 'hidden'\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)\r\n}\r\n\r\nexport const prepareCsvExport = (\r\n columns,\r\n data,\r\n organization,\r\n exportFileName\r\n) => {\r\n // first need to remove any hidden columns from the export\r\n columns = columns.filter(col => !col.hidden)\r\n\r\n // need to iterate through data and apply date format for any date columns\r\n const parsedData = data.map(row => {\r\n columns.forEach(col => {\r\n if (col.type === 'Date') {\r\n if (col.sortField) {\r\n if (row[col.sortField]) {\r\n row[col.sortField] = moment(row[col.sortField]).format(\r\n organization.exportDateFormat\r\n )\r\n }\r\n }\r\n }\r\n })\r\n return row\r\n })\r\n\r\n const parsedDataNewKeys = parsedData.map(row => {\r\n const newKeyObject = {}\r\n columns.forEach(col => {\r\n newKeyObject[col.title] = row[col.sortField] || row[col.field]\r\n })\r\n return newKeyObject\r\n })\r\n\r\n return exportCsv(parsedDataNewKeys, exportFileName + '.csv')\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogContentText from '@material-ui/core/DialogContentText'\r\nimport Button from '@material-ui/core/Button'\r\nimport Checkbox from '@material-ui/core/Checkbox'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport SearchIcon from '@material-ui/icons/Search'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { Paper } from '@material-ui/core'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\n\r\nexport default function ClientSelector(props) {\r\n const { clients, selectedClientIds, handleClientSelection, source, isClientMultiSelect } = props\r\n\r\n const [dialogOpen, setDialogOpen] = useState(false)\r\n const [filteredClients, setFilteredClients] = useState([])\r\n const [multiSelect, setMultiSelect] = useState(false)\r\n\r\n useEffect(() => {\r\n if (source === 'shipment' && isClientMultiSelect) {\r\n setMultiSelect(true)\r\n }\r\n }, [source, isClientMultiSelect])\r\n\r\n useEffect(() => {\r\n const clientsCopy = [...clients]\r\n clientsCopy.forEach(client => {\r\n client.checked = selectedClientIds?.includes(client.id)\r\n })\r\n setFilteredClients(clientsCopy)\r\n }, [selectedClientIds])\r\n\r\n const handleClientSelectChange = event => {\r\n const id = event.target.id\r\n // need to handle multi select\r\n if (!multiSelect) {\r\n const clientsCopy = [...filteredClients]\r\n clientsCopy.forEach(client => {\r\n client.checked = client.id === id\r\n })\r\n setFilteredClients(clientsCopy)\r\n return\r\n }\r\n const clientsCopy = [...filteredClients]\r\n const client = clientsCopy.find(client => client.id === id)\r\n client.checked = !client.checked\r\n setFilteredClients(clientsCopy)\r\n }\r\n\r\n const setAllClientsChecked = () => {\r\n const clientsCopy = [...filteredClients]\r\n clientsCopy.forEach(client => {\r\n client.checked = true\r\n })\r\n setFilteredClients(clientsCopy)\r\n }\r\n\r\n const setAllClientsUnchecked = () => {\r\n const clientsCopy = [...filteredClients]\r\n clientsCopy.forEach(client => {\r\n client.checked = false\r\n })\r\n setFilteredClients(clientsCopy)\r\n }\r\n\r\n return (\r\n <>\r\n }\r\n onClick={() => setDialogOpen(true)}\r\n >\r\n {\r\n selectedClientIds?.length > 0\r\n ? clients.find(client => client.id === selectedClientIds[0])?.name + (\r\n selectedClientIds?.length > 1\r\n ? ` (+${selectedClientIds?.length - 1} more)`\r\n : ''\r\n )\r\n : 'Select Client'\r\n }\r\n \r\n {\r\n setDialogOpen(false)\r\n // reset the filtered clients\r\n setFilteredClients(clients)\r\n }}\r\n >\r\n \r\n \r\n {\r\n multiSelect &&\r\n <>\r\n }\r\n onClick={setAllClientsChecked}>\r\n Select All\r\n \r\n  \r\n }\r\n onClick={setAllClientsUnchecked}>\r\n Unselect All\r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredClients = clients.filter(\r\n client => {\r\n return client.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n }\r\n )\r\n setFilteredClients(filteredClients)\r\n }}\r\n placeholder={'Enter client name..'}\r\n // need to default focus on the text field\r\n autoFocus={true}\r\n />\r\n
\r\n
\r\n {filteredClients?.map(client => (\r\n \r\n {\r\n handleClientSelectChange({\r\n target: { id: client.id }\r\n })\r\n }}\r\n >\r\n {\r\n multiSelect &&\r\n \r\n }\r\n {\r\n handleClientSelection([client.id])\r\n setDialogOpen(false)\r\n }\r\n }>\r\n { client.name }\r\n \r\n \r\n
\r\n ))}\r\n \r\n
\r\n {\r\n multiSelect &&\r\n \r\n }\r\n onClick={() => {\r\n setDialogOpen(false)\r\n }}\r\n >\r\n Cancel\r\n \r\n  \r\n }\r\n onClick={async () => {\r\n // get selected clients or client and pass it to the parent function\r\n const checkedClients = filteredClients.filter(\r\n client => client.checked\r\n )\r\n if (!checkedClients.length) {\r\n alert('Please select a client')\r\n return\r\n }\r\n handleClientSelection(\r\n checkedClients.map(client => client.id)\r\n )\r\n setDialogOpen(false)\r\n }}\r\n >\r\n Select\r\n \r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Button from '@material-ui/core/Button'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles'\r\nimport { useEffect } from 'react'\r\nimport { \r\n Select, \r\n MenuItem, \r\n InputLabel, \r\n Checkbox, \r\n FormControl, \r\n FormHelperText,\r\n LinearProgress\r\n} from '@material-ui/core'\r\nimport { ToggleButton, ToggleButtonGroup } from '@material-ui/lab'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport ScheduleIcon from '@material-ui/icons/Schedule'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport RefreshIcon from '@material-ui/icons/Refresh'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker\r\n} from '@material-ui/pickers'\r\nimport MaterialTable from 'material-table'\r\nimport moment from 'moment'\r\nimport {\r\n getScheduledReports,\r\n createScheduledReport,\r\n updateScheduledReport,\r\n deleteScheduledReport\r\n} from '../../api/api'\r\nimport ClientSelector from '../shared/ClientSelector'\r\nimport queryString from 'query-string'; // Import query-string library\r\n\r\n// Add utility function for date formatting\r\nconst dateToLocalString = date => {\r\n if (!date) return '-'\r\n return dateFns.moment.utc(date).local().format('YYYY-MM-DD HH:mm:ss')\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n dialog: {\r\n '& .MuiDialog-paper': {\r\n overflow: 'hidden'\r\n },\r\n '& .MuiDialogContent-root': {\r\n overflow: 'hidden'\r\n },\r\n '& .MuiDialog-paperScrollPaper': {\r\n overflow: 'hidden'\r\n }\r\n },\r\n formControl: {\r\n width: '100%',\r\n marginTop: theme.spacing(3),\r\n marginBottom: theme.spacing(1)\r\n },\r\n docTypeSelect: {},\r\n root: {\r\n width: '100%',\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n // editReportTextField: {\r\n // width: '100%',\r\n // marginTop: theme.spacing(3),\r\n // marginBottom: theme.spacing(1)\r\n // },\r\n editReportTextField: {\r\n width: '150px'\r\n },\r\n toggleGroup: {\r\n marginTop: theme.spacing(1),\r\n '& .MuiToggleButton-root.Mui-selected': {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText,\r\n '&:hover': {\r\n backgroundColor: theme.palette.primary.dark\r\n }\r\n }\r\n },\r\n sectionTitle: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(2)\r\n },\r\n gridContainer: {\r\n marginTop: theme.spacing(2)\r\n },\r\n formLabel: {\r\n marginTop: theme.spacing(2)\r\n },\r\n dateNote: {\r\n marginTop: theme.spacing(1),\r\n color: theme.palette.text.secondary,\r\n fontSize: '0.875rem'\r\n }\r\n}))\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nexport default function ScheduledReportsManagementDialog(props) {\r\n const classes = useStyles()\r\n const [open, setOpen] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [successMessage, setSuccessMessage] = React.useState('View Saved!')\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [changesMade, setChangesMade] = React.useState(false)\r\n const [selectedReport, setSelectedReport] = React.useState(null)\r\n const [allReports, setAllReports] = React.useState([])\r\n const [editDialogOpen, setEditDialogOpen] = React.useState(false)\r\n const [isNewReport, setIsNewReport] = React.useState(false)\r\n const [nameInputHelperText, setNameInputHelperText] = React.useState(null)\r\n const [nameInputError, setInputNameError] = React.useState(false)\r\n const [emailInputHelperText, setEmailInputHelperText] = React.useState(null)\r\n const [emailInputError, setEmailInputError] = React.useState(false)\r\n const [clients, setClients] = React.useState([])\r\n const [selectedClientIds, setSelectedClientIds] = React.useState([])\r\n const [mode, setMode] = React.useState('ALL')\r\n const [gridSearchTypes, setGridSearchTypes] = React.useState([])\r\n const [referenceType, setReferenceType] = React.useState('')\r\n const [itemReference, setItemReference] = React.useState('')\r\n const [dateView, setDateView] = React.useState('ALL')\r\n const [dateFiltering, setDateFiltering] = React.useState([])\r\n const [selectedDate, setSelectedDate] = React.useState(2) // this month by default\r\n const [fromDate, setFromDate] = React.useState(moment().startOf('month'))\r\n const [toDate, setToDate] = React.useState(moment().endOf('month'))\r\n\r\n // check if showDialog props is true\r\n useEffect(() => {\r\n if (props.showDialog) {\r\n handleScheduledReportsClickOpen().then(() => {\r\n // Set all the initial values from newReportData\r\n setSelectedReport(props.newReportData)\r\n if (props.newReportData) {\r\n setMode(props.newReportData.transportMode)\r\n setReferenceType(props.newReportData.referenceType)\r\n setItemReference(props.newReportData.itemReference)\r\n setDateView(props.newReportData.dateView)\r\n setSelectedDate(props.newReportData.selectedDate)\r\n setFromDate(props.newReportData.fromDate)\r\n setToDate(props.newReportData.toDate)\r\n setSelectedClientIds([props.newReportData.clientId])\r\n }\r\n setIsNewReport(true)\r\n setEditDialogOpen(true)\r\n })\r\n } else {\r\n setIsNewReport(false)\r\n }\r\n }, [props.showDialog])\r\n\r\n useEffect(() => {\r\n // Set grid search types from props\r\n if (props.reportSearchTypes) {\r\n setGridSearchTypes(props.reportSearchTypes)\r\n if (props.reportSearchTypes.length > 0) {\r\n setReferenceType(props.reportSearchTypes[0].searchType)\r\n }\r\n }\r\n }, [props.reportSearchTypes])\r\n\r\n useEffect(() => {\r\n // Set date filtering from props\r\n if (props.reportDateOptions) {\r\n setDateFiltering(props.reportDateOptions)\r\n }\r\n }, [props.reportDateOptions])\r\n\r\n useEffect(() => {\r\n // Set clients from props\r\n if (props.clients) {\r\n setClients(props.clients)\r\n if (props.clients.length > 0) {\r\n setSelectedClientIds([props.clients[0]?.id])\r\n }\r\n }\r\n }, [props.clients])\r\n\r\n useEffect(() => {\r\n async function fetchData() {\r\n await fetchScheduledReports()\r\n }\r\n fetchData()\r\n }, [])\r\n\r\n const { palette } = createTheme()\r\n const theme = createTheme({\r\n palette: {\r\n primary: {\r\n main: props.backgroundColor,\r\n contrastText: props.fontColor\r\n }\r\n }\r\n })\r\n\r\n const fetchScheduledReports = async () => {\r\n setIsLoading(true)\r\n\r\n const fetchedReports = await getScheduledReports(props.relatedModule)\r\n\r\n setAllReports(fetchedReports)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleScheduledReportsClickOpen = async () => {\r\n await fetchScheduledReports()\r\n setOpen(true)\r\n }\r\n\r\n const getSelectStartHourMenuItems = () => {\r\n const menuItems = []\r\n for (let i = 0; i < 24; i++) {\r\n menuItems.push({`${i}:00`})\r\n }\r\n return menuItems\r\n }\r\n\r\n const handleClose = () => {\r\n if (changesMade) {\r\n if (!window.confirm('Cancel without saving changes?')) {\r\n return\r\n } else {\r\n setChangesMade(false)\r\n }\r\n }\r\n setIsError(false)\r\n setErrorMessage('')\r\n setIsSuccess(false)\r\n setOpen(false)\r\n props.closeDialog()\r\n }\r\n\r\n const handleSuccess = successMessage => {\r\n setChangesMade(false)\r\n setSuccessMessage(successMessage)\r\n setIsSuccess(true)\r\n setInterval(function () {\r\n // call callback function passed in from props\r\n setIsSuccess(false)\r\n }, 3000)\r\n }\r\n\r\n const handleDeleteError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleDeleteSuccess = () => {\r\n setIsLoading(false)\r\n handleSuccess('Report Successfully Removed!')\r\n fetchScheduledReports()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const handleEditReportDialogClose = () => {\r\n setEditDialogOpen(false)\r\n // refresh the list of reports\r\n fetchScheduledReports()\r\n if (isNewReport) handleClose()\r\n }\r\n\r\n const handleDeleteReport = async id => {\r\n if (!window.confirm('Are you sure you want to delete this report?')) {\r\n return\r\n }\r\n setIsLoading(true)\r\n const response = await deleteScheduledReport(id)\r\n if (response !== null) {\r\n handleDeleteSuccess()\r\n } else {\r\n handleDeleteError('Error Deleting Scheduled Report')\r\n }\r\n }\r\n\r\n const getUTCDateTime = (date, hour) => {\r\n if (!date) {\r\n if (!hour) {\r\n return dateFns.moment.utc(new Date())\r\n }\r\n return dateFns.moment.utc(new Date()).hour(hour)\r\n }\r\n\r\n // need to set the hour before converting to UTC\r\n date = new Date(date)\r\n date = date.setHours(hour || 0, 0, 0, 0)\r\n\r\n return dateFns.moment.utc(date).format('YYYY-MM-DDTHH:mm:ss')\r\n }\r\n\r\n // Helper functions for parameter encoding/decoding\r\n const decodeParameters = (base64Str) => {\r\n if (!base64Str) return null;\r\n \r\n try {\r\n // Check if the string is already a JSON object\r\n if (typeof base64Str === 'object') {\r\n return base64Str;\r\n }\r\n \r\n // Try parsing as JSON first in case it's not base64 encoded\r\n try {\r\n return JSON.parse(base64Str);\r\n } catch {\r\n // If JSON parse fails, try base64 decode\r\n const decoded = atob(base64Str);\r\n return JSON.parse(decoded);\r\n }\r\n } catch (e) {\r\n console.error('Error decoding parameters:', e);\r\n return null;\r\n }\r\n };\r\n\r\n const encodeParameters = (paramsObj) => {\r\n try {\r\n const jsonStr = JSON.stringify(paramsObj);\r\n return btoa(jsonStr);\r\n } catch (e) {\r\n console.error('Error encoding parameters:', e);\r\n return null;\r\n }\r\n };\r\n\r\n const handleEditReportDialogSubmission = async () => {\r\n // check that name and email address are not empty\r\n if (!selectedReport?.name) {\r\n setInputNameError(true)\r\n setNameInputHelperText('Name is required')\r\n } else {\r\n setInputNameError(false)\r\n setNameInputHelperText(null)\r\n }\r\n\r\n if (!selectedReport?.emailAddress) {\r\n setEmailInputError(true)\r\n setEmailInputHelperText('Email Address is required')\r\n } else {\r\n setEmailInputError(false)\r\n setEmailInputHelperText(null)\r\n }\r\n\r\n if (!selectedReport?.name || !selectedReport?.emailAddress) {\r\n return\r\n }\r\n\r\n // check if each email address is valid\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\r\n // emails are separated by semi-colons\r\n const emailAddresses = selectedReport?.emailAddress.split(';')\r\n for (let i = 0; i < emailAddresses.length; i++) {\r\n if (!emailRegex.test(emailAddresses[i].trim())) {\r\n setEmailInputError(true)\r\n setEmailInputHelperText('Invalid Email Address')\r\n return\r\n }\r\n }\r\n\r\n const currentParams = isNewReport ? queryString.parse(selectedReport?.reportQueryString || '') : decodeParameters(selectedReport?.parameters);\r\n\r\n const updatedParams = {\r\n ...currentParams,\r\n Mode: mode,\r\n ReferenceType: referenceType,\r\n ShipmentSearchNumber: itemReference,\r\n OrderSearchNumber: itemReference,\r\n DateType: dateView,\r\n SelectedDate: selectedDate,\r\n FromDate: moment(fromDate).format('YYYY-MM-DD') + 'T00:00:00Z',\r\n ToDate: moment(toDate).format('YYYY-MM-DD') + 'T23:59:59Z',\r\n FromDateAsDate: moment(fromDate).format('YYYY-MM-DD') + 'T13:00:00+13:00',\r\n ToDateAsDate: moment(toDate).format('YYYY-MM-DD') + 'T12:59:59+13:00',\r\n ClientId: selectedClientIds[0]\r\n };\r\n\r\n if (isNewReport) {\r\n // handle new report submission\r\n setIsLoading(true)\r\n var newReport = {\r\n Name: selectedReport?.name,\r\n JobType: 0,\r\n RelatedModule: props.relatedModule,\r\n Frequency: selectedReport?.frequency,\r\n NextRunDate: getUTCDateTime(\r\n selectedReport?.nextRunDate ?? dateFns.moment.utc(new Date()),\r\n selectedReport?.nextRunTime ?? 6\r\n ),\r\n IsActive: selectedReport?.isActive,\r\n EmailAddress: selectedReport?.emailAddress,\r\n ReportQueryString: queryString.stringify(updatedParams),\r\n FromDateType: selectedReport?.fromDateType || 'fixed',\r\n ToDateType: selectedReport?.toDateType || 'fixed'\r\n }\r\n\r\n const response = await createScheduledReport(newReport)\r\n\r\n if (response !== null) {\r\n handleSuccess('Scheduled Report Created!')\r\n fetchScheduledReports()\r\n } else {\r\n handleError('Error Creating Scheduled Report')\r\n }\r\n } else {\r\n // handle edit report submission\r\n setIsLoading(true)\r\n \r\n var updatedReport = {\r\n Id: selectedReport?.id,\r\n Name: selectedReport?.name,\r\n JobType: 0,\r\n RelatedModule: selectedReport?.relatedModule,\r\n Frequency: selectedReport?.frequency,\r\n NextRunDate: getUTCDateTime(\r\n selectedReport?.nextRunDate,\r\n selectedReport?.nextRunTime\r\n ),\r\n IsActive: selectedReport?.isActive,\r\n EmailAddress: selectedReport?.emailAddress,\r\n FromDateType: selectedReport?.fromDateType || 'fixed',\r\n ToDateType: selectedReport?.toDateType || 'fixed',\r\n EncodedParameters: encodeParameters(updatedParams)\r\n };\r\n\r\n try {\r\n const response = await updateScheduledReport(updatedReport)\r\n if (response !== null) {\r\n fetchScheduledReports()\r\n handleSuccess('Scheduled Report Updated!')\r\n } else {\r\n handleError('Error Updating Scheduled Report')\r\n }\r\n } catch (error) {\r\n handleError('Error Updating Scheduled Report: ' + error.message)\r\n }\r\n }\r\n\r\n setEditDialogOpen(false)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleClientSelectChange = (clientIds) => {\r\n setSelectedClientIds(clientIds)\r\n // updateParameters('ClientId', clientIds[0])\r\n }\r\n\r\n const renderReportEditDialog = () => {\r\n // need to render a new dialog to show when the user clicks the edit icon on a specific column\r\n // this dialog will allow the user to change the column name and other properties\r\n // the dialog will have a text field for the column name, a checkbox for visible, and a checkbox for required\r\n // the dialog will have a save and cancel button\r\n // the dialog will have a delete button if the column is not required\r\n // the dialog will have a close button\r\n\r\n return (\r\n \r\n {`${isNewReport ? 'Create New' : 'Edit'} Scheduled Report${!isNewReport ? ' - ' + selectedReport?.name : ''}`}\r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n \r\n \r\n Transport Mode\r\n {\r\n setMode(e.target.value);\r\n // updateParameters('Mode', e.target.value);\r\n }}\r\n label=\"Mode\"\r\n >\r\n All\r\n Sea\r\n Air\r\n Courier\r\n Road\r\n Rail\r\n \r\n \r\n \r\n Search Type\r\n {\r\n setReferenceType(e.target.value);\r\n // updateParameters('ReferenceType', e.target.value);\r\n }}\r\n label=\"Search Type\"\r\n >\r\n {\r\n gridSearchTypes\r\n .filter(type => type.dropdownName === 'Search Type')\r\n .map((type, i) => (\r\n \r\n {type.searchTypeDescription}\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n {\r\n setItemReference(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n Date View\r\n {\r\n setDateView(e.target.value);\r\n // updateParameters('DateType', e.target.value);\r\n }}\r\n label=\"Date View\"\r\n >\r\n {\r\n gridSearchTypes\r\n .filter(type => type.dropdownName === 'Date View')\r\n .map((type, i) => (\r\n \r\n {type.searchTypeDescription}\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n Date Range\r\n {\r\n const value = e.target.value;\r\n const { from, to } = setDatesFromDateDropdown(value);\r\n \r\n // First update the state\r\n setSelectedDate(value);\r\n setFromDate(from);\r\n setToDate(to);\r\n \r\n // Then update the report parameters\r\n setSelectedReport(prevReport => {\r\n const currentParams = queryString.parse(prevReport?.reportQueryString || '');\r\n \r\n const updatedParams = {\r\n ...currentParams,\r\n SelectedDate: value,\r\n FromDate: moment(from).format('YYYY-MM-DD') + 'T00:00:00Z', \r\n ToDate: moment(to).format('YYYY-MM-DD') + 'T23:59:59Z', \r\n FromDateAsDate: moment(from).format('YYYY-MM-DD') + 'T13:00:00+13:00',\r\n ToDateAsDate: moment(to).format('YYYY-MM-DD') + 'T12:59:59+13:00'\r\n };\r\n \r\n return {\r\n ...prevReport,\r\n fromDate: from,\r\n toDate: to,\r\n selectedDate: value,\r\n reportQueryString: queryString.stringify(updatedParams)\r\n };\r\n });\r\n }}\r\n label=\"Date Range\"\r\n >\r\n {dateFiltering.map((option) => (\r\n \r\n {option.label}\r\n \r\n ))}\r\n \r\n *Report from/to dates will be dynamic based on 'Date Range' selection\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {\r\n setFromDate(date);\r\n const formattedDate = moment(date).format('YYYY-MM-DD');\r\n setSelectedReport(prevReport => {\r\n const currentParams = queryString.parse(prevReport?.reportQueryString || '');\r\n const updatedParams = {\r\n ...currentParams,\r\n FromDate: `${formattedDate}T00:00:00Z`,\r\n FromDateAsDate: `${formattedDate}T13:00:00+13:00`\r\n };\r\n return {\r\n ...prevReport,\r\n fromDate: date,\r\n reportQueryString: queryString.stringify(updatedParams)\r\n };\r\n });\r\n }}\r\n disabled={selectedReport?.selectedDate !== 11}\r\n className={classes.editReportTextField}\r\n />\r\n \r\n
\r\n {\r\n if (value !== null) {\r\n setSelectedReport({\r\n ...selectedReport,\r\n fromDateType: value\r\n });\r\n }\r\n }}\r\n aria-label=\"FromDateType\"\r\n id=\"editReportFromDateType\"\r\n className={classes.toggleGroup}\r\n >\r\n Fixed\r\n \r\n Relative\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {\r\n setToDate(date);\r\n const formattedDate = moment(date).format('YYYY-MM-DD');\r\n setSelectedReport(prevReport => {\r\n const currentParams = queryString.parse(prevReport?.reportQueryString || '');\r\n const updatedParams = {\r\n ...currentParams,\r\n ToDate: `${formattedDate}T23:59:59Z`,\r\n ToDateAsDate: `${formattedDate}T12:59:59+13:00`\r\n };\r\n return {\r\n ...prevReport,\r\n toDate: date,\r\n reportQueryString: queryString.stringify(updatedParams)\r\n };\r\n });\r\n }}\r\n disabled={selectedReport?.selectedDate !== 11}\r\n className={classes.editReportTextField}\r\n />\r\n \r\n
\r\n
\r\n {\r\n if (value !== null) {\r\n setSelectedReport({\r\n ...selectedReport,\r\n toDateType: value\r\n });\r\n }\r\n }}\r\n aria-label=\"ToDateType\"\r\n id=\"editReportToDateType\"\r\n className={classes.toggleGroup}\r\n >\r\n Fixed\r\n \r\n Relative\r\n \r\n \r\n
\r\n
\r\n
\r\n

\r\n Note: Relative date range will be\r\n calculated based on the current date.\r\n

\r\n
\r\n

Report Details

\r\n
\r\n \r\n \r\n \r\n setSelectedReport({\r\n ...selectedReport,\r\n name: e.target.value\r\n })\r\n }\r\n />\r\n
\r\n \r\n setSelectedReport({\r\n ...selectedReport,\r\n emailAddress: e.target.value\r\n })\r\n }\r\n />\r\n
\r\n \r\n Frequency\r\n \r\n \r\n setSelectedReport({\r\n ...selectedReport,\r\n frequency: e.target.value\r\n })\r\n }\r\n >\r\n Daily\r\n Weekly\r\n Monthly\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n setSelectedReport({\r\n ...selectedReport,\r\n nextRunDate: date\r\n })\r\n }}\r\n KeyboardButtonProps={{\r\n 'aria-label': 'change date'\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {isNewReport\r\n ? 'First Run Hour'\r\n : 'Next Run Hour'}\r\n \r\n \r\n setSelectedReport({\r\n ...selectedReport,\r\n nextRunTime: e.target.value\r\n })\r\n }\r\n >\r\n {getSelectStartHourMenuItems()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n setSelectedReport({\r\n ...selectedReport,\r\n isActive: e.target.checked\r\n })\r\n }\r\n inputProps={{\r\n 'aria-label': 'primary checkbox'\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 Save\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const setEditReportParameters = (reportParameters) => {\r\n // set the parameters for the report\r\n setMode(reportParameters?.Mode || 'ALL') \r\n setReferenceType(reportParameters?.ReferenceType || '')\r\n setItemReference(reportParameters?.ShipmentSearchNumber || reportParameters?.OrderSearchNumber || '')\r\n setDateView(reportParameters?.DateType || 'ALL')\r\n setSelectedDate(reportParameters?.SelectedDate || 2)\r\n setFromDate(reportParameters?.FromDate || moment().startOf('month')) \r\n setToDate(reportParameters?.ToDate || moment().endOf('month'))\r\n setSelectedClientIds([reportParameters?.ClientId || ''])\r\n }\r\n\r\n\r\n const handleReportSelection = id => {\r\n let editReport = allReports.find(report => report.id === id)\r\n if (!editReport) return;\r\n\r\n editReport.nextRunTime = dateFns.moment\r\n .utc(editReport.nextRunDate)\r\n .local()\r\n .hour()\r\n editReport.nextRunDate = dateFns.moment\r\n .utc(editReport.nextRunDate)\r\n .local()\r\n .format('YYYY-MM-DD')\r\n\r\n setSelectedReport(editReport)\r\n setEditReportParameters(decodeParameters(editReport.parameters))\r\n\r\n setIsNewReport(false)\r\n setEditDialogOpen(true)\r\n }\r\n\r\n const renderReportList = () => {\r\n const reportsTableTheme = createTheme({\r\n palette: {\r\n primary: {\r\n main: props.backgroundColor,\r\n contrastText: props.fontColor\r\n }\r\n }\r\n })\r\n\r\n return (\r\n (\r\n \r\n handleReportSelection(rowData.id)\r\n }\r\n >\r\n \r\n \r\n ),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Delete',\r\n field: 'delete',\r\n type: 'string',\r\n render: rowData => (\r\n handleDeleteReport(rowData.id)}\r\n >\r\n \r\n \r\n ),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Active',\r\n field: 'isActive',\r\n type: 'boolean',\r\n render: rowData => (rowData.isActive ? 'Yes' : 'No'),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Name',\r\n field: 'name',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap', fontWeight: 'bold' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Status',\r\n field: 'currentStatusString',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Frequency',\r\n field: 'frequencyString',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Email Address',\r\n field: 'emailAddress',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Next Run',\r\n field: 'nextRunDate',\r\n type: 'datetime',\r\n render: rowData =>\r\n dateToLocalString(rowData.nextRunDate),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Last Run',\r\n field: 'lastRunDate',\r\n type: 'datetime',\r\n render: rowData =>\r\n dateToLocalString(rowData.lastRunDate),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Last Run Duration',\r\n field: 'lastRunDurationString',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Created By',\r\n field: 'createdByString',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Created',\r\n field: 'createdDate',\r\n type: 'datetime',\r\n render: rowData =>\r\n dateToLocalString(rowData.createdDate),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Modified By',\r\n field: 'modifiedByString',\r\n type: 'string',\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n },\r\n {\r\n title: 'Modified',\r\n field: 'modifiedDate',\r\n type: 'datetime',\r\n render: rowData =>\r\n dateToLocalString(rowData.modifiedDate),\r\n cellStyle: { whiteSpace: 'nowrap' },\r\n headerStyle: { whiteSpace: 'nowrap' }\r\n }\r\n ]}\r\n data={allReports}\r\n options={{\r\n search: false,\r\n paging: false,\r\n sorting: false,\r\n showTitle: false,\r\n toolbar: false\r\n }}\r\n components={{\r\n Container: props =>
\r\n }}\r\n theme={reportsTableTheme}\r\n />\r\n )\r\n }\r\n\r\n const setDatesFromDateDropdown = value => {\r\n let from, to;\r\n \r\n switch(parseInt(value)) {\r\n case 0: // Today\r\n from = moment().startOf('day');\r\n to = moment().endOf('day');\r\n break;\r\n case 1: // This Week\r\n from = moment().startOf('week');\r\n to = moment().endOf('week');\r\n break;\r\n case 2: // This Month\r\n from = moment().startOf('month');\r\n to = moment().endOf('month');\r\n break;\r\n case 3: // This Year\r\n from = moment().startOf('year');\r\n to = moment().endOf('year');\r\n break;\r\n case 4: // Next Week\r\n from = moment().add(1, 'week').startOf('week');\r\n to = moment().add(1, 'week').endOf('week');\r\n break;\r\n case 5: // Next Month\r\n from = moment().add(1, 'month').startOf('month');\r\n to = moment().add(1, 'month').endOf('month');\r\n break;\r\n case 6: // Next Year\r\n from = moment().add(1, 'year').startOf('year');\r\n to = moment().add(1, 'year').endOf('year');\r\n break;\r\n case 7: // Last Week\r\n from = moment().subtract(1, 'week').startOf('week');\r\n to = moment().subtract(1, 'week').endOf('week');\r\n break;\r\n case 8: // Last Month\r\n from = moment().subtract(1, 'month').startOf('month');\r\n to = moment().subtract(1, 'month').endOf('month');\r\n break;\r\n case 9: // Last Year\r\n from = moment().subtract(1, 'year').startOf('year');\r\n to = moment().subtract(1, 'year').endOf('year');\r\n break;\r\n case 10: //All Time\r\n from = fromDate;\r\n to = toDate;\r\n break;\r\n case 11: //Custom\r\n from = moment(fromDate);\r\n to = moment(toDate);\r\n break;\r\n default:\r\n from = moment().startOf('month');\r\n to = moment().endOf('month');\r\n }\r\n\r\n return { from, to };\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n Scheduled Reports\r\n \r\n\r\n \r\n \r\n {'Scheduled Reports: ' + props.viewName}\r\n \r\n \r\n {isLoading && }\r\n {\r\n \r\n \r\n {\r\n // put list of scheduled reports here\r\n renderReportList()\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n >\r\n Refresh\r\n \r\n \r\n Close\r\n \r\n \r\n {isSuccess && (\r\n \r\n {successMessage}\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n \r\n {renderReportEditDialog()}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogContentText from '@material-ui/core/DialogContentText'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Table from '@material-ui/core/Table'\r\nimport TableBody from '@material-ui/core/TableBody'\r\nimport TableCell from '@material-ui/core/TableCell'\r\nimport TableRow from '@material-ui/core/TableRow'\r\nimport TableHead from '@material-ui/core/TableHead'\r\nimport TableContainer from '@material-ui/core/TableContainer'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { green } from '@material-ui/core/colors'\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { Typography } from '@material-ui/core'\r\nimport { red } from '@material-ui/core/colors'\r\nimport ImportExportIcon from '@material-ui/icons/ImportExport'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress, CircularProgress } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport Papa from 'papaparse'\r\n\r\nexport default function ShipmentImportDialog(props) {\r\n const [open, setOpen] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [selectedFile, setSelectedFile] = React.useState(null)\r\n const [isSelected, setIsSelected] = React.useState(false)\r\n const [parsedData, setParsedData] = React.useState([])\r\n const [importProfile, setImportProfile] = React.useState(null)\r\n\r\n const handleClickOpen = () => {\r\n // clear any previous data\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n\r\n // get shipment import profile for org\r\n fetch('api/shipments/GetShipmentImportProfile', {\r\n method: 'GET'\r\n })\r\n .then(response => response.json())\r\n .then(result => {\r\n setImportProfile(result)\r\n })\r\n .catch(error => {\r\n console.error('Error:', error)\r\n })\r\n\r\n setOpen(true)\r\n }\r\n\r\n const handleClose = () => {\r\n if (selectedFile !== null || parsedData.length > 0) {\r\n if (window.confirm('Are you sure you want to cancel the import?')) {\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n setParsedData([])\r\n setOpen(false)\r\n }\r\n } else {\r\n setOpen(false)\r\n }\r\n }\r\n\r\n const handleSuccess = () => {\r\n setIsSuccess(true)\r\n // reload page\r\n // setInterval(function () {\r\n // setIsSuccess(false)\r\n // setOpen(false)\r\n // }, 4000)\r\n // window.location.reload()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const handleFormReset = () => {\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n setParsedData([])\r\n }\r\n\r\n const handleSelectedFileChange = event => {\r\n if (event.target.files.length === 0) {\r\n return\r\n }\r\n setSelectedFile(event.target.files[0])\r\n // parse the file\r\n const reader = new FileReader()\r\n reader.onload = e => {\r\n const text = e.target.result\r\n let result = Papa.parse(text, { header: true })\r\n\r\n // need to add a flag to each row to track import status\r\n result.data.forEach(row => {\r\n row.importing = false\r\n row.imported = false\r\n row.importError = false\r\n })\r\n\r\n // there may be rows which are duplicates but have different container numbers and container types, these need to be merged into a single array property\r\n // so that the import process can handle them correctly\r\n let mergedData = []\r\n\r\n // first add empty importContainers array to each row\r\n\r\n\r\n\r\n result.data.forEach(row => {\r\n let existingRow = mergedData.find(r => r.houseBillNumber === row.houseBillNumber)\r\n if (existingRow) {\r\n // merge the container numbers and types\r\n if (!existingRow.importContainers) {\r\n existingRow.importContainers = []\r\n }\r\n existingRow.importContainers.push(\r\n {\r\n containerNumber: row.containerNumber,\r\n containerType: row.containerType\r\n }\r\n )\r\n } else {\r\n row.ImportContainers = [\r\n {\r\n containerNumber: row.containerNumber,\r\n containerType: row.containerType\r\n }\r\n ]\r\n mergedData.push(row)\r\n }\r\n })\r\n\r\n setParsedData(mergedData)\r\n setImportProfile(\r\n { ...importProfile, data: result.data }\r\n )\r\n }\r\n reader.readAsText(event.target.files[0])\r\n setIsSelected(true)\r\n }\r\n\r\n const useStyles = makeStyles(theme => ({\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n wrapper: {\r\n margin: theme.spacing(1),\r\n position: 'relative'\r\n },\r\n buttonSuccess: {\r\n backgroundColor: green[500],\r\n '&:hover': {\r\n backgroundColor: green[700]\r\n }\r\n },\r\n fabProgress: {\r\n color: green[500],\r\n position: 'absolute',\r\n top: -6,\r\n left: -6,\r\n zIndex: 1\r\n },\r\n buttonProgress: {\r\n color: green[500],\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12\r\n }\r\n }))\r\n const classes = useStyles()\r\n\r\n const generateTemplate = () => {\r\n // generate a csv file with the headers\r\n const csvData = {\r\n data: [],\r\n fields: importProfile.fields.map(field => field.name)\r\n }\r\n const csv = Papa.unparse(csvData)\r\n const blob = new Blob([csv], { type: 'text/csv' })\r\n const url = window.URL.createObjectURL(blob)\r\n const a = document.createElement('a')\r\n a.setAttribute('hidden', '')\r\n a.setAttribute('href', url)\r\n a.setAttribute('download', 'ShipmentImportTemplate.csv')\r\n document.body.appendChild(a)\r\n a.click()\r\n window.URL.revokeObjectURL(url)\r\n a.remove()\r\n } \r\n\r\n const mapRowData = (rows, fields) => {\r\n return rows.map(row => {\r\n let newRow = {}\r\n fields.forEach(field => {\r\n newRow[field.value] = row[field.name]\r\n })\r\n newRow['importResult'] = ''\r\n newRow['importResultMessage'] = ''\r\n newRow['importedShipmentNumber'] = ''\r\n newRow['importLog'] = ''\r\n return newRow\r\n })\r\n }\r\n\r\n const handleImportShipments = async (specificRow = null, rowIndex = null) => {\r\n\r\n let importShipments = []\r\n if (rowIndex) {\r\n importShipments.push(specificRow)\r\n } else {\r\n importShipments = parsedData\r\n }\r\n\r\n if (importShipments.length === 0) {\r\n setIsError(true)\r\n setErrorMessage('No shipment data to import.')\r\n } else {\r\n importShipments = mapRowData(importShipments, importProfile.fields)\r\n }\r\n\r\n // need to check if any required fields are missing and show an error\r\n let missingFields = []\r\n importShipments.forEach(row => {\r\n importProfile.fields.forEach(field => {\r\n if (field.required && row[field.value] === '') {\r\n // if field doesn't already exist then add\r\n if (!missingFields.includes(field.name)) {\r\n missingFields.push(field.name)\r\n }\r\n }\r\n })\r\n })\r\n\r\n if (missingFields.length > 0) {\r\n setIsError(true)\r\n setErrorMessage('The following required fields are missing: ' + missingFields.join(', '))\r\n return\r\n }\r\n\r\n if (importShipments.length === 0) {\r\n setIsError(true)\r\n setErrorMessage('No shipment data to import.')\r\n } else {\r\n setIsError(false)\r\n setIsSuccess(false)\r\n setErrorMessage('')\r\n\r\n // if it's a specific row then set the importing flag in parsedData, otherwise set all\r\n if (rowIndex) {\r\n setParsedData(parsedData.map((row, index) => {\r\n if (index === rowIndex) {\r\n row.importing = true\r\n }\r\n return row\r\n }))\r\n } else {\r\n setParsedData(parsedData.map(row => {\r\n row.importing = true\r\n return row\r\n }))\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n const jsonPayload = JSON.stringify(importShipments)\r\n\r\n try {\r\n\r\n const importResponse= await fetch('api/shipments/ImportShipments', {\r\n headers: header,\r\n method: 'POST',\r\n body: jsonPayload\r\n })\r\n\r\n if (importResponse.ok) {\r\n const importResult = await importResponse.json()\r\n\r\n // result is an array of import results with ImportResult, ImportResultMessage and ImportedShipmentNumber\r\n importResult.forEach((result, resultIndex) => {\r\n if (rowIndex) {\r\n setParsedData(parsedData.map((row, index) => {\r\n if (index === rowIndex) {\r\n row.imported = result.importResult === 'Success'\r\n row.importError = result.importResult === 'Failed'\r\n row.importResult = result.importResult\r\n row.importResultMessage = result.importResultMessage\r\n row.importLog = result.importLog\r\n row.importedShipmentNumber = result.importedShipmentNumber\r\n }\r\n return row\r\n }))\r\n } else {\r\n setParsedData(parsedData.map((row, index) => {\r\n if (index === resultIndex) {\r\n row.imported = result.importResult === 'Success'\r\n row.importError = result.importResult === 'Failed'\r\n row.importResult = result.importResult\r\n row.importResultMessage = result.importResultMessage\r\n row.importLog = result.importLog\r\n row.importedShipmentNumber = result.importedShipmentNumber\r\n }\r\n return row\r\n }))\r\n }\r\n })\r\n handleSuccess()\r\n } else {\r\n const error = await importResponse.text()\r\n setIsError(true)\r\n setErrorMessage('An error occurred while importing shipments: ' + error)\r\n }\r\n }\r\n catch (error) {\r\n console.error('Error:', error)\r\n setIsError(true)\r\n setErrorMessage('An error occurred while importing shipments.')\r\n } finally {\r\n setIsLoading(false)\r\n if (rowIndex) {\r\n setParsedData(parsedData.map((row, index) => {\r\n if (index === rowIndex) {\r\n row.importing = false\r\n }\r\n return row\r\n }))\r\n } else {\r\n setParsedData(parsedData.map(row => {\r\n row.importing = false\r\n return row\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 Import Shipments\r\n \r\n \r\n \r\n Shipments Import\r\n \r\n {\r\n // user needs to be able to download a template\r\n importProfile !== null && (\r\n \r\n Download Template\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n // import profile has headers defined\r\n importProfile !== null &&\r\n importProfile.fields.map(\r\n (field, index) => (\r\n // if it's the first field then add a cell for row actions\r\n index === 0 ?\r\n (\r\n <>\r\n \r\n Actions\r\n \r\n \r\n Result\r\n \r\n \r\n Log\r\n \r\n \r\n ) :\r\n (\r\n \r\n { \r\n // if header is required then show it in red\r\n field.required ?\r\n {field.name + '*'} :\r\n {field.name}\r\n } \r\n \r\n )\r\n \r\n )\r\n )\r\n }\r\n \r\n \r\n \r\n {parsedData.map((row, rowIndex) => (\r\n // if it's the first row then \r\n \r\n {importProfile !== null &&\r\n importProfile.fields.map(\r\n (field, fieldIndex) => (\r\n // add actions if first field\r\n fieldIndex === 0 ?\r\n (\r\n <>\r\n \r\n {\r\n row.importing ?\r\n :\r\n row.imported ?\r\n :\r\n row.importError ?\r\n :\r\n handleImportShipments(row, rowIndex)}\r\n >\r\n Import \r\n \r\n }\r\n \r\n \r\n {row.importResultMessage}\r\n \r\n \r\n alert(row.importLog || 'No log available.')}\r\n >\r\n Log \r\n \r\n \r\n \r\n\r\n ) :\r\n (\r\n // otherwise add the data\r\n // if the field is not in the row then show empty cell\r\n row[field.name] === undefined ?\r\n :\r\n // otherwise show the data\r\n (\r\n // if the field is required and empty then show it in red\r\n field.required && row[field.name] === '' ?\r\n \r\n {row[field.name]}\r\n :\r\n // otherwise show it normally\r\n \r\n {row[field.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 {isSelected ? (\r\n
\r\n

Filename: {selectedFile?.name}

\r\n

Type: {selectedFile?.type}

\r\n

\r\n Size:{' '}\r\n {parseInt(Number(selectedFile?.size) / 1000)}kb\r\n

\r\n

\r\n Last Modified:{' '}\r\n {selectedFile?.lastModifiedDate.toLocaleDateString()}\r\n

\r\n
\r\n ) : (\r\n

Select a file to show details

\r\n )}\r\n
\r\n {isLoading && }\r\n \r\n \r\n \r\n \r\n \r\n {isSuccess && (\r\n \r\n {\r\n parsedData.filter(row => row.imported).length + ' shipments imported successfully.'\r\n }\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React, { useState } from 'react'\r\nimport { \r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n FormControl,\r\n Select,\r\n MenuItem \r\n} from '@material-ui/core'\r\nimport authService from './api-authorization/AuthorizeService'\r\n\r\nexport default function BookingApprovalButton({\r\n booking, // from shipmentDetailPage.js\r\n clientId,\r\n selectedRows, // from shipmentTable.js\r\n ...props\r\n}) {\r\n const [modalOpen, setModalOpen] = useState(false)\r\n const [transportMode, setTransportMode] = useState('SEA')\r\n const [selectedBookings, setSelectedBookings] = useState(null)\r\n\r\n const handleApproveClick = (e) => {\r\n e.stopPropagation() // Prevent event bubbling\r\n const bookingNumbers = (typeof selectedRows === 'function' ? selectedRows() : selectedRows)?.map(r => r.shipmentNumber) || [] // Get the actual rows from the function if selectedRows is a function\r\n setSelectedBookings(bookingNumbers && bookingNumbers.length > 0 ? bookingNumbers : (booking ? ['S' + booking.houseBillNumber] : [])) // If no rows are selected, use the booking number from the shipment detail page\r\n setModalOpen(true)\r\n }\r\n \r\n const handleModalClose = () => {\r\n setModalOpen(false)\r\n }\r\n\r\n const handleConfirmApprove = async () => {\r\n setModalOpen(false)\r\n\r\n try {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/shipments/ApproveBookings', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: clientId,\r\n BookingNumbers: selectedBookings,\r\n TransportMode: transportMode,\r\n Consignee: selectedBookings[0]?.consignee,\r\n Destination: selectedBookings[0]?.destinationPortCode\r\n })\r\n })\r\n \r\n if (!response.ok) throw new Error(await response.text())\r\n alert('Booking approved successfully')\r\n window.location.reload()\r\n } catch (error) {\r\n alert(error.message)\r\n }\r\n }\r\n \r\n return (\r\n <>\r\n \r\n { props.buttonTitle || 'Approve Booking' }\r\n \r\n\r\n \r\n Approve Booking - Select Transport Mode\r\n \r\n \r\n setTransportMode(e.target.value)}\r\n >\r\n Sea\r\n Air\r\n Courier\r\n Road\r\n Rail\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { \r\n Button\r\n} from '@material-ui/core'\r\nimport authService from './api-authorization/AuthorizeService'\r\n\r\nexport default function BookingRejectButton({\r\n booking, // from shipmentDetailPage.js\r\n clientId,\r\n selectedRows, // from shipmentTable.js\r\n ...props\r\n}) {\r\n const handleRejectBooking = async () => {\r\n const bookingNumbers = (typeof selectedRows === 'function' ? selectedRows() : selectedRows)?.map(r => r.shipmentNumber) || [] // Get the actual rows from the function if selectedRows is a function\r\n const bookingNumbersToReject = bookingNumbers && bookingNumbers.length > 0 ? bookingNumbers : (booking ? ['S' + booking.houseBillNumber] : []) // If no rows are selected, use the booking number from the shipment detail page\r\n \r\n try { \r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/shipments/RejectBookings', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: clientId,\r\n BookingNumbers: bookingNumbersToReject\r\n })\r\n })\r\n if (!response.ok) {\r\n const responseObj = await response.json()\r\n throw new Error(responseObj.message)\r\n }\r\n alert('Booking(s) successfully rejected.')\r\n window.location.reload()\r\n } \r\n catch (error) {\r\n alert(error.message)\r\n }\r\n }\r\n \r\n return (\r\n <>\r\n \r\n \r\n )\r\n}\r\n","import React, { PureComponent, forwardRef, createRef } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport {\r\n TextField,\r\n Tooltip,\r\n LinearProgress,\r\n IconButton\r\n} from '@material-ui/core'\r\nimport { FormControl, InputLabel, FormHelperText } from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button, Link } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { renderMap } from '../components/shared/MapHelper'\r\nimport { getIconForShipment } from '../components/shared/MapHelper'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { CardContent } from '@material-ui/core'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport MaterialTable from 'material-table'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { Paper } from '@material-ui/core'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport ScheduleIcon from '@material-ui/icons/Schedule'\r\nimport FlagIcon from '@material-ui/icons/Flag'\r\nimport localforage from 'localforage'\r\nimport { sortData } from '../utils/sorting'\r\nimport { getOrgViewCodeFromOrganization } from '../utils/organizations'\r\nimport { clientUserHasPermission } from '../utils/permissions'\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle\r\n} from '@material-ui/core'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport TableViewManagementDialog from './shared/TableViewManagementDialog'\r\nimport {\r\n retrieveView,\r\n getViewCodeBySearchItem,\r\n getViewNameBySearchItem,\r\n saveViewColumns\r\n} from './shared/Views'\r\nimport TableViewCreateDialog from './shared/TableViewCreateDialog'\r\nimport { getContainerExtraData } from './shared/ShipmentsHelper'\r\nimport DialogContainer from './DialogContainer'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\nimport ClientSelector from '../components/shared/ClientSelector'\r\nimport ScheduledReportsManagementDialog from './shared/ScheduledReportsManagementDialog'\r\nimport ShipmentImportDialog from './shared/ShipmentImportDialog'\r\nimport BookingApprovalButton from './BookingApprovalButton'\r\nimport BookingRejectButton from './BookingRejectButton'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText,\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst mapContainerStyle = {\r\n height: '100%',\r\n width: '100%'\r\n}\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass ShipmentsTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.tableRef = React.createRef()\r\n this.selectedRowsRef = React.createRef()\r\n this.state = {\r\n items: [],\r\n shipmentList: [],\r\n clients: [],\r\n clientId: null,\r\n selectedClientIds: [],\r\n organization: null,\r\n selectedDate: 2, // this month\r\n toDate: dateFns.moment().endOf('month'),\r\n fromDate: dateFns.moment().startOf('month'),\r\n minDate: dateFns.moment().startOf('month'),\r\n todayDate: new Date(),\r\n loading: false,\r\n error: false,\r\n isClientMultiSelect: false,\r\n rowsPerPage: 50,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'shipmentNumber',\r\n resultsBox1Value: 0,\r\n resultsBox1Title: '',\r\n resultsBox2Value: 0,\r\n resultsBox2Title: '',\r\n resultsBox3Value: 0,\r\n resultsBox3Title: '',\r\n resultsBox4Value: 0,\r\n resultsBox4Title: '',\r\n resultsBox5Value: 0,\r\n resultsBox5Title: '',\r\n resultsBox6Value: 0,\r\n resultsBox6Title: '',\r\n lastCompletedMilestone: 'ALL',\r\n referenceType: 'ALL',\r\n dateView: 'ALL',\r\n itemReference: null,\r\n mode: 'ALL',\r\n theme: props.theme,\r\n searchItem: props.searchItem || 'Shipments',\r\n titleIcon: props.titleIcon || 'assignment_turned_in',\r\n key: props.itemKey || 'shipment',\r\n originUNLOCOCodeObject: null,\r\n originName: null,\r\n originCountryCodeObject: null,\r\n destinationUNLOCOCodeObject: null,\r\n destinationName: null,\r\n destinationCountryCodeObject: null,\r\n originUnlocoCodes: [],\r\n originCountryCodes: [],\r\n destinationUnlocoCodes: [],\r\n destinationCountryCodes: [],\r\n downloadCSVDisabled: false,\r\n displayAdvancedSearchProperties: false,\r\n searching: false,\r\n shipmentFilters: [],\r\n gridSearchTypes: [],\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: '',\r\n // approveBookingModalOpen: false,\r\n // bookingApproveMode: 'SEA',\r\n // bookingsToApprove: [],\r\n updatingApprovalMode: false,\r\n orgHeaderColumns: [],\r\n dateFiltering: [],\r\n userViewId: null,\r\n primaryColor: '#ffffff',\r\n secondaryColor: '#000000',\r\n selectedContainer: null,\r\n selectedShipment: null,\r\n showContainerDialog: false,\r\n currentSummaryTile: 1,\r\n orderClients: [],\r\n orgViewCode: null,\r\n showScheduledReports: false,\r\n newReportData: null,\r\n canSeeScheduledReports: false,\r\n selectedDateHelperText: '',\r\n selectedRows: null,\r\n selectedClientId: null,\r\n canImportShipments: false,\r\n clientUserCanImportShipments: false\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ searching: true })\r\n\r\n await this.getOrgViewCode()\r\n await this.populateConfig()\r\n await this.setClientsWithOrderAccess()\r\n await this.populateClientsData()\r\n }\r\n\r\n async getOrgViewCode() {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n this.setState({ orgViewCode: viewCode })\r\n }\r\n\r\n async setClientUserPermissions() {\r\n const { clientId } = this.state\r\n const clientUserCanImportShipments = await clientUserHasPermission(\r\n clientId,\r\n 'importshipments'\r\n )\r\n this.setState({ clientUserCanImportShipments: clientUserCanImportShipments })\r\n }\r\n\r\n async runClientDependentFunctions() {\r\n const referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n this.fetchGridSearchTypes()\r\n this.initSearch()\r\n this.getOrgHeaderColumns()\r\n this.setClientUserPermissions()\r\n\r\n if (!referredFromDetailPage) {\r\n // need to do a dummy data load to get the summary tile data\r\n this.populateTableData(true, true)\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n\r\n getOrgHeaderColumns = async () => {\r\n const { searchItem, clientId } = this.state\r\n const viewCode = getViewCodeBySearchItem(searchItem)\r\n if (clientId) {\r\n const view = await retrieveView(clientId, viewCode)\r\n if (view) {\r\n this.setState({\r\n orgHeaderColumns: view.columnDefinitionsArray,\r\n userViewId: view.id\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleContainerNumberClick = async (rowData, containerNumber) => {\r\n // first need to get container data\r\n const clientId = this.state.isClientMultiSelect ? rowData.clientId : this.state.clientId\r\n this.setState({ searching: true })\r\n\r\n const container = await getContainerExtraData(\r\n rowData,\r\n containerNumber,\r\n clientId\r\n )\r\n\r\n if (container) {\r\n this.setState(\r\n {\r\n selectedContainer: container,\r\n selectedShipment: rowData\r\n },\r\n () => {\r\n this.setState({ showContainerDialog: true })\r\n }\r\n )\r\n this.setState({ searching: false })\r\n } else {\r\n this.setState({ searching: false })\r\n }\r\n }\r\n\r\n setContainerDialogState = showDialog => {\r\n this.setState({ showContainerDialog: showDialog })\r\n }\r\n\r\n getModuleBySearchItem = searchItem => {\r\n switch (searchItem) {\r\n case 'Shipments':\r\n return 2\r\n case 'Bookings':\r\n return 1\r\n case 'Customs':\r\n return 4\r\n default:\r\n return 2\r\n }\r\n }\r\n\r\n handleNewScheduledReport = () => {\r\n\r\n // if multiple clients selected then return - not supported\r\n if (this.state.selectedClientIds?.length > 1) {\r\n alert('Multiple clients selected. Scheduled reports not supported for multiple clients.')\r\n return\r\n }\r\n\r\n // first get report data from search params then open dialog\r\n const newReportData = {\r\n module: this.state.searchItem,\r\n key: this.state.key,\r\n clientId: this.state.clientId,\r\n clientName: this.state.clients.find(\r\n c => c.id === this.state.clientId\r\n ).name,\r\n transportMode: this.state.mode,\r\n referenceType: this.state.referenceType,\r\n referenceTypeDescription: this.state.gridSearchTypes.find(\r\n gst => gst.searchType === this.state.referenceType\r\n ).searchTypeDescription,\r\n itemReference: this.state.itemReference,\r\n dateView: this.state.dateView,\r\n selectedDate: this.state.selectedDate,\r\n dateRange: this.state.dateFiltering.find(\r\n df => df.id === this.state.selectedDate\r\n ).label,\r\n fromDate: this.state.fromDate,\r\n toDate: this.state.toDate,\r\n reportQueryString: this.getQueryString(true, false),\r\n relatedModule: this.getModuleBySearchItem(this.state.searchItem)\r\n }\r\n this.setState({ newReportData: newReportData }, () => {\r\n this.setState({ showScheduledReports: true })\r\n })\r\n }\r\n\r\n async initSearch() {\r\n // only load search from cache if navigating back from detail page\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForageNoKey('shipmentFilters')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox6Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox6Title')\r\n await this.loadAndSetFromLocalForage('shipmentList')\r\n await this.loadAndSetFromLocalForage('items')\r\n await this.loadAndSetFromLocalForage('currentSummaryTile')\r\n // reset 'referred' value in local storage\r\n localStorage.setItem(\r\n 'referredFromDetailPage',\r\n JSON.stringify(false)\r\n )\r\n } else {\r\n // clear shipmentfilters?\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('itemReference')\r\n await this.loadAndSetFromLocalStorage('mode')\r\n await this.loadAndSetFromLocalStorage('referenceType')\r\n await this.loadAndSetFromLocalStorage('dateView')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate')\r\n await this.loadAndSetFromLocalStorage('toDate')\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, jsonParse = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n const value = jsonParse\r\n ? await JSON.parse(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (value !== null) {\r\n if (value.toLowerCase() === 'null') {\r\n this.setState({ [`${keyName}`]: null })\r\n } else {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForage(keyName) {\r\n const { key } = this.state\r\n const localForageKey = `${key}.${keyName}`\r\n const value = await localforage.getItem(localForageKey)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForageNoKey(keyName) {\r\n const value = await localforage.getItem(keyName)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n saveShipmentFilterValuesToState = tableRef => {\r\n const newColumnFilters = tableRef.current.state.columns.map(column => ({\r\n field: column.field,\r\n filterValue: column.tableData.filterValue\r\n }))\r\n localforage.setItem('shipmentFilters', newColumnFilters)\r\n this.setState({ shipmentFilters: newColumnFilters })\r\n }\r\n\r\n validSearchParameters = () => {\r\n this.setState({\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: ''\r\n })\r\n\r\n // if selected date is 11 (all time) then make sure the reference isn't null and is at least 3 characters\r\n const { selectedDate, itemReference } = this.state\r\n\r\n // if (parseInt(selectedDate) === 10) {\r\n // if (itemReference === null || itemReference.length < 3) {\r\n // this.setState({\r\n // itemReferenceError: true,\r\n // itemReferenceErrorMessage: '3 characters minimum required for \\'All Time\\' date search.'\r\n // })\r\n // return false\r\n // }\r\n // }\r\n\r\n return true\r\n }\r\n\r\n getURLForItem = (itemvalue, rowClientId) => {\r\n const { clientId, key, isClientMultiSelect } = this.state\r\n const pathClientId = isClientMultiSelect ? rowClientId : clientId\r\n\r\n var initialPath = `${ApplicationPaths.Shipments}`\r\n if (key === 'customs') {\r\n initialPath = `${ApplicationPaths.Customs}`\r\n } else if (key === 'booking') {\r\n initialPath = `${ApplicationPaths.Bookings}`\r\n }\r\n\r\n return {\r\n pathname: initialPath + '/' + pathClientId + '/' + itemvalue\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n if (this.validSearchParameters()) {\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n this.populateTableData(event)\r\n }\r\n }\r\n\r\n handleClearAll = async event => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (key.indexOf(`${this.state.key}.`) !== -1) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n\r\n localStorage.removeItem('referredFromDetailPage')\r\n\r\n var lfKeys = []\r\n\r\n await localforage\r\n .keys()\r\n .then(function (keys) {\r\n lfKeys = keys\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n\r\n for (let lfKey of lfKeys) {\r\n if (lfKey.indexOf(this.state.key + '.') !== -1) {\r\n await localforage\r\n .removeItem(lfKey)\r\n .then(function () {\r\n // nothing\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n }\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: //All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: //Custom\r\n from = dateFns.moment.utc(fromDate)\r\n to = dateFns.moment.utc(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: parseInt(value),\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n handleClientSelectChange = selectedClientIds => {\r\n localStorage.setItem(this.state.key + '.clientId', selectedClientIds[0])\r\n localStorage.setItem(this.state.key + '.selectedClientIds', JSON.stringify(selectedClientIds))\r\n this.setState({ \r\n clientId: selectedClientIds[0],\r\n selectedClientIds: selectedClientIds \r\n })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const { key } = this.state\r\n\r\n const customIndex = 11\r\n\r\n switch (elem) {\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'reference-type':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.referenceType', value)\r\n this.setState({\r\n referenceType: value\r\n })\r\n break\r\n\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'mode':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.mode', value)\r\n this.setState({\r\n mode: value\r\n })\r\n break\r\n\r\n case 'reference':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.itemReference', value)\r\n this.setState({\r\n itemReference: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n getDateObject = (time, substract = false) => {\r\n var moment = require('moment')\r\n const format = 'YYYY-MM-DD HH:mm:ss'\r\n var base = substract ? moment().substract(1, 'month') : moment()\r\n return {\r\n From: base.startOf(time).format(format),\r\n To: base.endOf(time).format(format)\r\n }\r\n }\r\n\r\n getDates = () => {\r\n const { selectedDate } = this.state\r\n\r\n if (selectedDate === 0) {\r\n return this.getDateObject('day')\r\n } else if (selectedDate === 1) {\r\n return this.getDateObject('week')\r\n } else if (selectedDate === 2) {\r\n return this.getDateObject('month')\r\n } else if (selectedDate === 3) {\r\n return this.getDateObject('month', true)\r\n } else if (selectedDate === 4) {\r\n return this.getDateObject('year')\r\n }\r\n\r\n return this.getDateObject('day')\r\n }\r\n\r\n renderToolTipOrderRef = orderRefValue => {\r\n var orderRef = ''\r\n var array = []\r\n if (orderRefValue != null) {\r\n array = orderRefValue.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderToolTipAddress = delAddressValue => {\r\n var delAddress = ''\r\n var array = []\r\n if (delAddressValue != null) {\r\n array = delAddressValue.split(',')\r\n delAddress = array[0]\r\n }\r\n // remove any empty elements\r\n array = array.filter(function (e) {\r\n return e !== ''\r\n })\r\n\r\n return (\r\n <>\r\n {delAddress}\r\n \r\n
{array.join(', ')}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n renderNavLinkOrderRef = (rowClientId, shipmentData) => {\r\n // if clientid exists in orderClients then show orders\r\n const orderClientId = this.state.isClientMultiSelect ? rowClientId : this.state.clientId\r\n const showOrders = this.state.orderClients.includes(orderClientId)\r\n \r\n var orderRefs = shipmentData.orderReferenceNumber\r\n if (orderRefs != null) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (shipmentData.orders) {\r\n var order = shipmentData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return (\r\n
\r\n {showOrders ? (\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n key={index}\r\n to={\r\n '/orders/' +\r\n orderClientId +\r\n '/' +\r\n btoa(refnum.trim()).replace(\r\n '/',\r\n '_'\r\n ) +\r\n '/' +\r\n order.orderNumberSplit\r\n }\r\n >\r\n {refnum.trim()}\r\n \r\n ) : (\r\n {refnum.trim()}\r\n )}\r\n
\r\n )\r\n } else {\r\n return
{refnum}
\r\n }\r\n } else {\r\n return
{refnum}
\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>-\r\n }\r\n }\r\n\r\n renderShipmentsTable = items => {\r\n const {\r\n organization,\r\n key,\r\n searchItem,\r\n clientId,\r\n clients,\r\n shipmentFilters,\r\n orgHeaderColumns,\r\n userViewId,\r\n primaryColor,\r\n themeTextColor,\r\n canSeeScheduledReports,\r\n canImportShipments,\r\n clientUserCanImportShipments\r\n } = this.state\r\n\r\n const tableTheme = createTheme()\r\n const currentClient = clients?.find(e => e.id === clientId)\r\n const tableViewCode = getViewCodeBySearchItem(this.state.searchItem)\r\n const tableViewName = getViewNameBySearchItem(this.state.searchItem)\r\n\r\n let cachedHeaderKeyValue = ''\r\n if (searchItem === 'Customs') {\r\n cachedHeaderKeyValue =\r\n currentClient?.clientview !== 'DEFAULT'\r\n ? 'customsHeaders'.concat('_', currentClient?.clientviewId)\r\n : 'customsHeaders'\r\n } else if (searchItem === 'Bookings') {\r\n cachedHeaderKeyValue =\r\n currentClient?.clientview !== 'DEFAULT'\r\n ? 'bookingHeaders'.concat('_', currentClient?.clientviewId)\r\n : 'bookingHeaders'\r\n } else {\r\n cachedHeaderKeyValue =\r\n currentClient?.clientview !== 'DEFAULT'\r\n ? 'columnHeaders'.concat('_', currentClient?.clientviewId)\r\n : 'columnHeaders'\r\n }\r\n\r\n // Have to map new property as column header doesn't match field value\r\n const mappedItems = items.map(item => ({\r\n ...item,\r\n transportMode: item.mode ? item.mode : item.transportMode\r\n }))\r\n\r\n // Map headCells to match required properties for material-table\r\n function getHeaderColumns() {\r\n const columnHeaders =\r\n organization !== null && orgHeaderColumns !== null\r\n ? orgHeaderColumns.map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: headcell.visible ? false : true,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n removable: true,\r\n hiddenByColumnsButton: true,\r\n id: headcell.id,\r\n order: headcell.order,\r\n customTitle: headcell.customTitle,\r\n width: headcell.width\r\n }\r\n })\r\n : []\r\n return columnHeaders\r\n }\r\n\r\n let savedColumns = getHeaderColumns()\r\n\r\n // Need to add the render function as can't store this in localstorage\r\n var columnHeaders = savedColumns.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n customSort: (a, b) => sortData(column, a, b),\r\n hidden: column.hidden,\r\n removable: column.removable,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n hiddenByColumnsButton: column.hiddenByColumnsButton,\r\n defaultFilter: getFilter(column.field),\r\n render: params => {\r\n if (column.field === 'transportMode') {\r\n return getIconForShipment(params)\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(params.shipmentNumber, params.clientId)}\r\n >\r\n {params.shipmentNumber}\r\n \r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderNavLinkOrderRef(params.clientId, params)\r\n } else if (column.field === 'orderRef') {\r\n return this.renderToolTipOrderRef(params.orderRef)\r\n } else if (column.field === 'deliveryAddress') {\r\n return this.renderToolTipAddress(params.deliveryAddress)\r\n } else if (column.field === 'bookingApproved') {\r\n return params.bookingApproved ? 'YES' : null\r\n } else if (\r\n organization?.containerTrackingURL !== null &&\r\n column.field === 'containerNumber' &&\r\n params.containerNumber !== '' &&\r\n params.containerNumber !== null\r\n ) {\r\n return params.containerNumber.split(',').map(c => {\r\n // need to remove the container type inside the parentheses\r\n var parIndex = c.indexOf('(')\r\n var containerNumber =\r\n parIndex === -1\r\n ? c\r\n : c.substring(0, parIndex - 1)\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization?.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n containerNumber.trim()\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n {c}\r\n \r\n )\r\n })\r\n } else if (\r\n !organization?.containerTrackingURL &&\r\n column.field === 'containerNumber' &&\r\n params.containerNumber\r\n ) {\r\n return params.containerNumber.split(',').map(c => {\r\n var parIndex = c.indexOf('(')\r\n var containerNumber =\r\n parIndex === -1\r\n ? c\r\n : c.substring(0, parIndex - 1)\r\n return c ? (\r\n containerNumber ? (\r\n <>\r\n {\r\n this.handleContainerNumberClick(\r\n params,\r\n containerNumber\r\n )\r\n }}\r\n >\r\n {c}\r\n \r\n \r\n ) : (\r\n c\r\n )\r\n ) : (\r\n ''\r\n )\r\n })\r\n } else if (column.field === 'shipmentFlagged') {\r\n return params.shipmentFlagged ? 'YES' : null\r\n } else {\r\n return params[column.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n let tableActions = []\r\n\r\n if (searchItem !== 'Customs') {\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n },\r\n tooltip: `Toggle ${searchItem.replace('s', '')} Flagged`,\r\n onClick: (event, rowData) => {\r\n this.toggleRecordFlagged(rowData)\r\n }\r\n })\r\n }\r\n\r\n if (this.state.searchItem === 'Bookings') {\r\n tableActions.push(\r\n {\r\n icon: () => (\r\n this.selectedRowsRef.current}\r\n clientId={clientId}\r\n buttonTitle='Approve Bookings'\r\n />\r\n ),\r\n tooltip: 'Approve Booking'\r\n },\r\n {\r\n icon: () => (\r\n this.selectedRowsRef.current}\r\n clientId={clientId}\r\n buttonTitle='Reject Bookings'\r\n />\r\n ),\r\n tooltip: 'Reject Booking'\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n tooltip: 'Edit/Copy Booking',\r\n onClick: (event, rowData) => {\r\n this.editCopyBooking(rowData)\r\n }\r\n }\r\n )\r\n }\r\n\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n\r\n if (canImportShipments && clientUserCanImportShipments) {\r\n tableActions.push({\r\n icon: () => { \r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n if (canSeeScheduledReports) {\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n this.setState({ showScheduledReports: false })\r\n }\r\n newReportData={this.state.newReportData}\r\n reportSearchTypes={this.state.gridSearchTypes}\r\n reportDateOptions={this.state.dateFiltering}\r\n relatedModule={this.getModuleBySearchItem(\r\n this.state.searchItem\r\n )}\r\n clients={this.state.clients}\r\n />\r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n const handleColumnDrag = (sourceIndex, destinationIndex) => {\r\n // take copy of source column\r\n const sourceColumn = savedColumns[sourceIndex]\r\n // remove source column\r\n savedColumns.splice(sourceIndex, 1)\r\n // insert at destination\r\n savedColumns.splice(destinationIndex, 0, sourceColumn)\r\n // update database\r\n const viewCode = getViewCodeBySearchItem(searchItem)\r\n // map savedColumns from frontend to match the database\r\n savedColumns = savedColumns.map(column => {\r\n return {\r\n id: column.id,\r\n title: column.title,\r\n customTitle: column.customTitle,\r\n value: column.field,\r\n width: column.width,\r\n visible: column.hidden ? false : true,\r\n order: column.order,\r\n type: column.type,\r\n sortField: column.sortField\r\n }\r\n })\r\n\r\n this.setState({ orgHeaderColumns: savedColumns })\r\n\r\n saveViewColumns(\r\n viewCode,\r\n savedColumns,\r\n userViewId,\r\n currentClient?.clientviewId,\r\n true,\r\n clientId\r\n )\r\n }\r\n\r\n function handleChangeColumnHidden(column, hidden) {\r\n // Update hidden flag\r\n for (let i = 0; i < savedColumns.length; i++) {\r\n if (savedColumns[i].field === column.field) {\r\n // Set column hidden\r\n savedColumns[i].hidden = hidden\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n break\r\n }\r\n }\r\n }\r\n\r\n function getFilter(field) {\r\n const columnData = shipmentFilters.find(col => col.field === field)\r\n if (columnData) {\r\n return columnData.filterValue\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n return ( \r\n \r\n (\r\n \r\n ))\r\n }}\r\n actions={tableActions}\r\n onSelectionChange={rowData => {\r\n this.selectedRowsRef.current = rowData\r\n }}\r\n options={{\r\n filterRowStyle: {\r\n position: 'sticky',\r\n top: 49,\r\n background: 'white',\r\n zIndex: 5 /* optionally */\r\n },\r\n filtering: true,\r\n maxBodyHeight: 'calc(100vh - 470px)',\r\n pageSizeOptions: [25, 50, 75],\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n searchFieldAlignment: 'left',\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: true,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n tableLayout: 'auto',\r\n padding: 'dense',\r\n selection: key === 'booking' ? true : false,\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n // check if 'hot order'\r\n backgroundColor: rowData.shipmentFlagged\r\n ? '#F8AFA7'\r\n : null\r\n }),\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n this.state.organization,\r\n searchItem + 'Export_' + Date.now()\r\n )\r\n }}\r\n onColumnDragged={handleColumnDrag}\r\n onChangeColumnHidden={handleChangeColumnHidden}\r\n />\r\n \r\n )\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n resultsBox6Value,\r\n resultsBox6Title,\r\n key,\r\n currentSummaryTile\r\n } = this.state\r\n\r\n const handleSummaryTileClick = (tileName, tileId) => {\r\n // these may have changed\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n var newShipmentList = this.state.items.filter(\r\n i => i.status !== null && i.status.includes(tileName)\r\n )\r\n this.setState({\r\n shipmentList: newShipmentList,\r\n currentSummaryTile: tileId\r\n })\r\n localforage.setItem(key + '.shipmentList', newShipmentList)\r\n localforage.setItem(key + '.currentSummaryTile', tileId)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n shipmentList: this.state.items,\r\n currentSummaryTile: 1\r\n })\r\n localforage.setItem(\r\n key + '.shipmentList',\r\n this.state.items\r\n )\r\n localforage.setItem(\r\n key + '.currentSummaryTile',\r\n 1\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox2Title,\r\n 2\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox3Title,\r\n 3\r\n )\r\n }}\r\n />\r\n \r\n {resultsBox4Title ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox4Title,\r\n 4\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n {resultsBox5Title ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox5Title,\r\n 5\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n {resultsBox6Title ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox6Title,\r\n 6\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n\r\n const {\r\n clients,\r\n clientId,\r\n selectedClientIds,\r\n selectedDate,\r\n fromDate,\r\n toDate,\r\n minDate,\r\n todayDate,\r\n referenceType,\r\n dateView,\r\n itemReference,\r\n mode,\r\n key,\r\n organization,\r\n titleIcon,\r\n itemReferenceError,\r\n itemReferenceErrorMessage,\r\n dateFiltering,\r\n primaryColor,\r\n themeTextColor,\r\n showContainerDialog,\r\n selectedContainer,\r\n selectedShipment,\r\n shipmentList,\r\n canSeeScheduledReports,\r\n selectedDateHelperText,\r\n isClientMultiSelect\r\n } = this.state\r\n\r\n let currentClient = clients?.find(e => e.id === clientId)\r\n // if client multi select then need to find client based on selectedShipment\r\n if (isClientMultiSelect) {\r\n currentClient = clients?.find(e => e.id === selectedShipment?.clientId)\r\n }\r\n\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n {/*
\r\n

\r\n {this.state.searchItem + ' Search'}\r\n

\r\n {titleIcon}\r\n
*/}\r\n \r\n \r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an error while\r\n retrieving items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMap(shipmentList)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Mode\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'mode'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Air\r\n \r\n \r\n Sea\r\n \r\n \r\n Road\r\n \r\n \r\n COU\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Search Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference-type'\r\n )\r\n }\r\n >\r\n {this.state.gridSearchTypes\r\n .filter(type => type.dropdownName === 'Search Type')\r\n .map(\r\n function (type, i) {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Reference # (3 chars min)\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n {this.state.gridSearchTypes\r\n .filter(type => type.dropdownName === 'Date View')\r\n .map(\r\n function (type, i) {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\r\n )\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.handleChangeValue(\r\n e,\r\n 'toDate'\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.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'SEARCH'}\r\n \r\n \r\n \r\n \r\n RESET SEARCH\r\n \r\n \r\n {canSeeScheduledReports && (\r\n \r\n }\r\n >\r\n SCHEDULE REPORT\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {this.renderShipmentsTable(\r\n shipmentList\r\n )}\r\n
\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { clientId, key, searchItem } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/clients/getclientslist?module=${searchItem.toLowerCase()}`,\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n const cachedClientIds = localStorage.getItem(\r\n key + '.selectedClientIds'\r\n )\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients?.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n this.setState({ clientId: cachedClientId }, () => {\r\n this.runClientDependentFunctions()\r\n })\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0]?.id\r\n )\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0]?.id)\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n if (cachedClientIds) {\r\n this.setState({\r\n selectedClientIds: JSON.parse(cachedClientIds)\r\n })\r\n } else {\r\n if (cachedClientId) {\r\n this.setState({\r\n selectedClientIds: [cachedClientId]\r\n })\r\n } else {\r\n this.setState({\r\n selectedClientIds: [clients[0]?.id]\r\n })\r\n }\r\n }\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true }, () => {\r\n return false\r\n })\r\n }\r\n }\r\n\r\n async setClientsWithOrderAccess() {\r\n const token = await authService.getAccessToken()\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/clients/getclientslist?module=orders`,\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ orderClients: data })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const { key } = this.state\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n const scheduledReportsAccess = data.featureAccessParameters.find(\r\n fap => fap.featureCode === 'ScheduledReports'\r\n )\r\n const clientMultiSelect = data.featureAccessParameters.find(\r\n fap => fap.featureCode === 'ClientMultiSelect'\r\n )\r\n const shipmentImporting = data.featureAccessParameters.find(\r\n fap => fap.featureCode === 'ShipmentImporting'\r\n )\r\n\r\n this.setState({\r\n organization: data,\r\n canSeeScheduledReports: scheduledReportsAccess?.enabled,\r\n isClientMultiSelect: clientMultiSelect?.enabled,\r\n canImportShipments: shipmentImporting?.enabled,\r\n dateFiltering: data.dateFilterTypeArray,\r\n primaryColor: data.colorThemePrimaryRGB,\r\n themeTextColor: data.colorThemeTextRGB\r\n })\r\n localforage.setItem(key + '.organization', data)\r\n }\r\n\r\n async fetchGridSearchTypes() {\r\n const { clientId, key } = this.state\r\n const itemKeyUpper = key?.toUpperCase()\r\n\r\n if (clientId) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetGridSearchTypes?clientId=' +\r\n clientId +\r\n '&module=' +\r\n itemKeyUpper,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ gridSearchTypes: data })\r\n }\r\n }\r\n }\r\n\r\n getQueryString = (useQuickSearch = true, initialLoad = false) => {\r\n const {\r\n clientId,\r\n referenceType,\r\n fromDate,\r\n toDate,\r\n mode,\r\n itemReference,\r\n originUNLOCOCodeObject,\r\n originCountryCodeObject,\r\n originName,\r\n destinationUNLOCOCodeObject,\r\n destinationCountryCodeObject,\r\n destinationName,\r\n dateView,\r\n searchItem,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['SearchItem'] = searchItem\r\n qs['referenceType'] = referenceType\r\n qs['Mode'] = mode\r\n qs['UseQuickSearch'] = true\r\n\r\n if (itemReference !== null && itemReference.length > 1) {\r\n qs['ShipmentSearchNumber'] = itemReference\r\n }\r\n\r\n if (originUNLOCOCodeObject !== null) {\r\n qs['Origin'] = originUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (originCountryCodeObject !== null) {\r\n qs['OriginCountryName'] = originCountryCodeObject.countryName\r\n }\r\n\r\n if (originName !== null) {\r\n qs['OriginName'] = originName\r\n }\r\n\r\n if (destinationUNLOCOCodeObject !== null) {\r\n qs['Destination'] = destinationUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (destinationCountryCodeObject !== null) {\r\n qs['DestinationCountryName'] =\r\n destinationCountryCodeObject.countryName\r\n }\r\n\r\n if (destinationName !== null) {\r\n qs['DestinationName'] = destinationName\r\n }\r\n\r\n qs['DateType'] = dateView\r\n\r\n if (fromDate && selectedDate !== 10) {\r\n qs['FromDate'] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10) {\r\n qs['ToDate'] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n if (initialLoad) {\r\n qs['InitialLoad'] = true\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async editCopyBooking(rowData) {\r\n const { clientId } = this.state\r\n\r\n const hasPermission = await clientUserHasPermission(\r\n clientId,\r\n 'editcopybookings'\r\n )\r\n if (hasPermission === true) {\r\n if (rowData.length > 1) {\r\n alert('You can only edit/copy a single booking.')\r\n return\r\n }\r\n\r\n // need to set order number to local storage\r\n localStorage.setItem(\r\n 'editCopyBookingNumber',\r\n rowData[0].shipmentNumber\r\n )\r\n localStorage.setItem('editCopyBookingClientId', clientId)\r\n\r\n // redirect to booking page using javascript\r\n window.location.href = '/shipments/create'\r\n } else {\r\n alert('You do not have permission to edit/copy bookings.')\r\n }\r\n }\r\n\r\n async toggleRecordFlagged(rowData) {\r\n\r\n const { searchItem } = this.state\r\n this.setState({ searching: true })\r\n\r\n // if this is bookings then rowData will be an array so need to set as first object in array\r\n if (searchItem === 'Bookings') {\r\n // only allow one booking to be flagged at a time\r\n if (rowData.length > 1) {\r\n alert('Only one booking can be flagged at a time.')\r\n return\r\n }\r\n rowData = rowData[0]\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const rawResponse = await fetch('api/shipments/FlagShipment', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: this.state.isClientMultiSelect ? rowData.clientId : this.state.clientId,\r\n FlaggedValue: rowData.shipmentFlagged ? false : true,\r\n ShipmentNumber: rowData.shipmentNumber,\r\n Module: this.state.searchItem\r\n })\r\n })\r\n\r\n if (rawResponse.ok) {\r\n // indicate success to user\r\n this.populateTableData()\r\n } else {\r\n var responseText = await rawResponse.text()\r\n this.setState({ searching: false })\r\n if (rawResponse.status === 403) {\r\n // feature not enabled\r\n alert(responseText)\r\n } else {\r\n alert('Failed to flag, please contact support.')\r\n }\r\n }\r\n }\r\n\r\n async populateTableData(useQuickSearch = true, initialLoad = false) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n const { clientId, key, selectedClientIds } = this.state\r\n this.setState({ searching: true })\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(selectedClientIds)\r\n }\r\n\r\n const response = await fetch(\r\n `api/shipments/GetShipments?` +\r\n this.getQueryString(useQuickSearch, initialLoad),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n this.setState({\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title,\r\n resultsBox6Value: data.resultsBox6Value,\r\n resultsBox6Title: data.resultsBox6Title\r\n })\r\n\r\n localforage.setItem(key + '.shipmentList', data.shipments)\r\n localforage.setItem(key + '.items', data.shipments)\r\n localStorage.setItem(\r\n key + '.resultsBox1Value',\r\n data.resultsBox1Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox1Title',\r\n data.resultsBox1Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Value',\r\n data.resultsBox2Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Title',\r\n data.resultsBox2Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Value',\r\n data.resultsBox3Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Title',\r\n data.resultsBox3Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Value',\r\n data.resultsBox4Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Title',\r\n data.resultsBox4Title\r\n )\r\n if (data.resultsBox5Title) {\r\n localStorage.setItem(\r\n key + '.resultsBox5Value',\r\n data.resultsBox5Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Title',\r\n data.resultsBox5Title\r\n )\r\n } else {\r\n localStorage.removeItem(key + '.resultsBox5Value')\r\n localStorage.removeItem(key + '.resultsBox5Title')\r\n }\r\n\r\n if (data.resultsBox6Title) {\r\n localStorage.setItem(\r\n key + '.resultsBox6Value',\r\n data.resultsBox6Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox6Title',\r\n data.resultsBox6Title\r\n )\r\n } else {\r\n localStorage.removeItem(key + '.resultsBox6Value')\r\n localStorage.removeItem(key + '.resultsBox6Title')\r\n }\r\n\r\n this.setState({\r\n items: data.shipments,\r\n shipmentList: data.shipments,\r\n loading: false\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(ShipmentsTable)\r\n","import React from 'react'\r\n\r\nconst UnauthorizedMessage = ({ moduleName }) => {\r\n return (\r\n
\r\n

Sorry!

\r\n

You don't have permission to view the {moduleName} module.

\r\n
\r\n )\r\n}\r\n\r\nexport default UnauthorizedMessage\r\n","import React, { useState, useEffect } from 'react'\r\nimport ShipmentsTable from './ShipmentsTable'\r\nimport { canSearchShipment } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function Shipments() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setLoadingShow] = useState(true)\r\n const [showSearchShipment, setShowSearchShipment] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setLoadingShow(true)\r\n const data = await response.json()\r\n setShowSearchShipment(await canSearchShipment(data))\r\n setLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : showSearchShipment ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Shipments' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { Paper } from '@material-ui/core'\r\nimport { TextField, Tooltip } from '@material-ui/core'\r\nimport {\r\n FormControl,\r\n InputLabel,\r\n LinearProgress,\r\n FormHelperText\r\n} from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { CardContent } from '@material-ui/core'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { downloadInvoicePDF, downloadInvoicesCSV } from '../api/api'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport MaterialTable from 'material-table'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { sortData } from '../utils/sorting'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport TableViewManagementDialog from './shared/TableViewManagementDialog'\r\nimport TableViewCreateDialog from './shared/TableViewCreateDialog'\r\nimport { retrieveView } from './shared/Views'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\nimport ClientSelector from '../components/shared/ClientSelector'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass AccountingTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n items: [],\r\n invoiceList: [],\r\n clients: [],\r\n clientId: null,\r\n organization: null,\r\n selectedDate: 2, // this month\r\n fromDate: dateFns.moment().startOf('month'),\r\n toDate: dateFns.moment().endOf('month'),\r\n loading: true,\r\n error: false,\r\n rowsPerPage: 25,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'aH_TransactionNum',\r\n ageNotDue: 0,\r\n ageCurrent: 0,\r\n age30_45: 0,\r\n age46_60: 0,\r\n age60_90: 0,\r\n age90: 0,\r\n totalInvoiceAmount: 0,\r\n totalOutstandingAmount: 0,\r\n paymentStatus: 'ALL',\r\n dateView: 'Due Date',\r\n transactionType: 'ALL',\r\n theme: props.theme,\r\n labeledInvoice: '',\r\n key: props.itemKey || 'invoice',\r\n downloadCSVDisabled: true,\r\n searching: false,\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: '',\r\n orgHeaderColumns: [],\r\n dateFiltering: [],\r\n currentSummaryTile: 1,\r\n orderClients: [],\r\n showOrders: false,\r\n selectedDateHelperText: ''\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ searching: true })\r\n\r\n await this.setClientsWithOrderAccess()\r\n await this.populateConfig()\r\n await this.populateClientsData()\r\n }\r\n\r\n async runClientDependentFunctions() {\r\n await this.initSearch()\r\n await this.getOrgHeaderColumns()\r\n await this.populateTableData(true)\r\n\r\n this.setState({ searching: false })\r\n }\r\n\r\n async initSearch() {\r\n await this.loadAndSetFromLocalStorage('clientId')\r\n await this.loadAndSetFromLocalStorage('paymentStatus')\r\n await this.loadAndSetFromLocalStorage('transactionType')\r\n await this.loadAndSetFromLocalStorage('labeledInvoice')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate', true)\r\n await this.loadAndSetFromLocalStorage('toDate', true)\r\n }\r\n\r\n getOrgHeaderColumns = async () => {\r\n const { clientId } = this.state\r\n if (clientId) {\r\n const accountingOrgView = await retrieveView(\r\n clientId,\r\n 'AccountingSearchGrid'\r\n )\r\n if (accountingOrgView) {\r\n this.setState({\r\n orgHeaderColumns: accountingOrgView.columnDefinitionsArray\r\n })\r\n }\r\n }\r\n }\r\n\r\n setClientsWithOrderAccess = async () => {\r\n const token = await authService.getAccessToken()\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/clients/getclientslist?module=orders`,\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ orderClients: data })\r\n }\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: //All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: //Custom\r\n from = dateFns.moment.utc(fromDate)\r\n to = dateFns.moment.utc(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: parseInt(value),\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n renderNavLinkOrderRef = (clientId, invoiceData) => {\r\n const { showOrders } = this.state\r\n var orderRefs = invoiceData.orderReferenceNumber\r\n if (orderRefs != null) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (invoiceData.orders) {\r\n var order = invoiceData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return (\r\n
\r\n {showOrders ? (\r\n \r\n {refnum}\r\n \r\n ) : (\r\n {refnum}\r\n )}\r\n
\r\n )\r\n } else {\r\n return
{refnum}
\r\n }\r\n } else {\r\n return
{refnum}
\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, isDate = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n const value =\r\n isDate && localStorage.getItem(localStorageKey) !== null\r\n ? await dateFns.moment(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n\r\n handleRequestSort = (event, property) => {\r\n const { order, orderBy } = this.state\r\n const isAsc = orderBy === property && order === 'asc'\r\n this.setState({ order: isAsc ? 'desc' : 'asc', orderBy: property })\r\n }\r\n\r\n handleChangePage = (event, page) => {\r\n this.setState({ page: page })\r\n }\r\n\r\n handleChangeRowsPerPage = (event, page) => {\r\n this.setState({\r\n rowsPerPage: parseInt(event.target.value, 10),\r\n page: 0\r\n })\r\n }\r\n\r\n validSearchParameters = () => {\r\n this.setState({\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: ''\r\n })\r\n\r\n // if selected date is 11 (all time) then make sure the reference isn't null and is at least 3 characters\r\n const { selectedDate, labeledInvoice } = this.state\r\n\r\n // if (parseInt(selectedDate) === 10) {\r\n // if (labeledInvoice === null || labeledInvoice.length < 3) {\r\n // this.setState({\r\n // itemReferenceError: true,\r\n // itemReferenceErrorMessage: '3 characters minimum required for \\'All Time\\' date search.'\r\n // })\r\n // return false\r\n // }\r\n // }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = async event => {\r\n if (this.validSearchParameters()) {\r\n this.populateTableData()\r\n }\r\n }\r\n\r\n handleDownloadCSV = async event => {\r\n this.setState({ downloadCSVDisabled: true })\r\n downloadInvoicesCSV(\r\n this.getQueryString(),\r\n blob => {\r\n const url = window.URL.createObjectURL(new Blob([blob]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', `invoices.csv`)\r\n document.body.appendChild(link)\r\n link.click()\r\n link.parentNode.removeChild(link)\r\n\r\n this.setState({ downloadCSVDisabled: false })\r\n },\r\n () => {\r\n this.setState({ downloadCSVDisabled: false })\r\n }\r\n )\r\n }\r\n\r\n handleClientSelectChange = selectedClientIds => {\r\n localStorage.setItem(this.state.key + '.clientId', selectedClientIds[0])\r\n this.setState({ clientId: selectedClientIds[0] })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const customIndex = 11\r\n\r\n switch (elem) {\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(this.state.key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(\r\n this.state.key + '.selectedDate',\r\n customIndex\r\n )\r\n localStorage.setItem(this.state.key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(\r\n this.state.key + '.selectedDate',\r\n customIndex\r\n )\r\n localStorage.setItem(this.state.key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(this.state.key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'paymentStatus':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(this.state.key + '.paymentStatus', value)\r\n this.setState({\r\n paymentStatus: value\r\n })\r\n break\r\n\r\n case 'transactionType':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(this.state.key + '.transactionType', value)\r\n this.setState({\r\n transactionType: value\r\n })\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(this.state.key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'labeledInvoice':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(this.state.key + '.labeledInvoice', value)\r\n this.setState({\r\n labeledInvoice: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n renderToolTipOrderRef = item => {\r\n var orderRef = ''\r\n var array = []\r\n if (item.orderReferenceNumber != null) {\r\n array = item.orderReferenceNumber.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}

\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderAccountingTable = items => {\r\n const { clientId, orgHeaderColumns, organization } = this.state\r\n const tableTheme = createTheme()\r\n\r\n var headCells = orgHeaderColumns\r\n .filter(column => column.visible)\r\n .map(column => {\r\n return {\r\n field: column.value,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField\r\n }\r\n })\r\n\r\n // doing the previous map as shipment/order tables have pre-parsing of columns for local user\r\n headCells = headCells.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n customSort: (a, b) => sortData(column, a, b),\r\n render: params => {\r\n if (column.field === 'aH_TransactionNum') {\r\n return (\r\n {\r\n handleDownloadInvoicePDF(\r\n params.aH_TransactionNum,\r\n clientId\r\n )\r\n }}\r\n >\r\n {params.aH_TransactionNum}\r\n \r\n )\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n \r\n {params.shipmentNumber}\r\n
\r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderNavLinkOrderRef(clientId, params)\r\n } else if (\r\n column.field === 'aH_InvoiceAmount' ||\r\n column.field === 'aH_OutstandingAmount'\r\n ) {\r\n return <>{params[column.field].toLocaleString()}\r\n } else {\r\n return <>{params[column.field]}\r\n }\r\n }\r\n }\r\n })\r\n\r\n const handleDownloadInvoicePDF = async (invoiceNumber, clientId) => {\r\n downloadInvoicePDF(\r\n invoiceNumber,\r\n clientId,\r\n (blob, headers) => {\r\n const filename = headers\r\n .get('Content-Disposition')\r\n .split('filename=')[1]\r\n .split(';')[0]\r\n\r\n const newFilename = filename.slice(1, filename.length - 1)\r\n\r\n const url = window.URL.createObjectURL(new Blob([blob]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', newFilename)\r\n document.body.appendChild(link)\r\n link.click()\r\n link.parentNode.removeChild(link)\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 options={{\r\n filtering: true,\r\n maxBodyHeight: 'calc(100vh - 350px)',\r\n pageSizeOptions: [15, 25, 50, 75],\r\n filterRowStyle: {\r\n position: 'sticky',\r\n top: 49,\r\n background: 'white',\r\n zIndex: 5 /* optionally */\r\n },\r\n sorting: true,\r\n pageSize: 15,\r\n showTitle: false,\r\n doubleHorizontalScroll: true,\r\n search: false,\r\n columnsButton: false,\r\n showFirstLastPageButtons: false,\r\n toolbar: true,\r\n draggable: false,\r\n padding: 'dense',\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n organization,\r\n 'AccountingExport_' + Date.now()\r\n )\r\n }}\r\n />\r\n \r\n )\r\n }\r\n\r\n handleSummaryTileClick = (tileName, tileId) => {\r\n this.setState({\r\n invoiceList: this.state.items.filter(\r\n i =>\r\n i.invoiceStage !== null && i.invoiceStage.includes(tileName)\r\n ),\r\n currentSummaryTile: tileId\r\n })\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n resultsBox6Value,\r\n resultsBox6Title,\r\n resultsBox7Value,\r\n resultsBox7Title,\r\n resultsBox8Value,\r\n resultsBox8Title,\r\n currentSummaryTile\r\n } = this.state\r\n return (\r\n //
\r\n
\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('1', 1)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('2', 2)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('3', 3)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('4', 4)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('5', 5)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick('6', 6)\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.setState({\r\n invoiceList: this.state.items,\r\n currentSummaryTile: 7\r\n })\r\n }}\r\n />\r\n \r\n \r\n {\r\n this.handleSummaryTileClick(\r\n '_TOTALOUTSTANDING',\r\n 8\r\n )\r\n }}\r\n />\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n isDueDateView = () => {\r\n const { dateView } = this.state\r\n return dateView === 'Due Date'\r\n }\r\n\r\n dateFromLabel = () => {\r\n return this.isDueDateView() ? 'Due Date From' : 'Post Date From'\r\n }\r\n\r\n dateToLabel = () => {\r\n return this.isDueDateView() ? 'Due Date To' : 'Post Date To'\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const {\r\n clients,\r\n clientId,\r\n fromDate,\r\n toDate,\r\n postDateTo,\r\n paymentStatus,\r\n transactionType,\r\n dateView,\r\n labeledInvoice,\r\n selectedDate,\r\n selectedDateHelperText,\r\n downloadCSVDisabled,\r\n organization,\r\n itemReferenceError,\r\n itemReferenceErrorMessage,\r\n dateFiltering\r\n } = this.state\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#000000'\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Labeled Invoice #\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'labeledInvoice'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n \r\n Due Date\r\n \r\n \r\n Post Date\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {this.dateFromLabel()}\r\n \r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\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.dateToLabel()}\r\n \r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'toDate'\r\n )\r\n }\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Paid Status\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'paymentStatus'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Paid\r\n \r\n \r\n Unpaid\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Transaction Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'transactionType'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n CRD\r\n \r\n \r\n INV\r\n \r\n \r\n REC\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n this.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'QUICK SEARCH'}\r\n \r\n \r\n \r\n <>\r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an\r\n error while retrieving\r\n items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\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.renderAccountingTable(\r\n this.state.invoiceList,\r\n this.state.page,\r\n this.state.rowsPerPage,\r\n this.handleChangePage,\r\n this.handleChangeRowsPerPage\r\n )}\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { key } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=accounting',\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n this.setState({ clientId: cachedClientId }, () => {\r\n this.runClientDependentFunctions()\r\n })\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0].id\r\n )\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0].id)\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n dateFiltering: data.dateFilterTypeArray\r\n })\r\n }\r\n\r\n getQueryString = (initialLoad = false) => {\r\n const {\r\n clientId,\r\n paymentStatus,\r\n transactionType,\r\n fromDate,\r\n toDate,\r\n labeledInvoice,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['TransactionType'] = transactionType\r\n qs['PaymentStatus'] = paymentStatus\r\n\r\n if (labeledInvoice.length > 0) {\r\n qs['AH_DescSearch'] = labeledInvoice\r\n }\r\n\r\n if (fromDate && selectedDate !== 10){\r\n const dateFromKey = this.isDueDateView()\r\n ? 'DueFromDate'\r\n : 'PostFromDate'\r\n qs[dateFromKey] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10){\r\n const dateToKey = this.isDueDateView() ? 'DueToDate' : 'PostToDate'\r\n qs[dateToKey] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n if (initialLoad) {\r\n qs['InitialLoad'] = true\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async populateTableData(initialLoad = false) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n const { clientId, orderClients } = this.state\r\n const orderClient = orderClients?.find(c => c.id === clientId)\r\n\r\n this.setState({ showOrders: orderClient ? true : false })\r\n this.setState({ searching: true })\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/Accounting/GetInvoices?` +\r\n this.getQueryString(initialLoad),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({\r\n items: data.invoices,\r\n invoiceList: data.invoices,\r\n loading: false,\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title,\r\n resultsBox6Value: data.resultsBox6Value,\r\n resultsBox6Title: data.resultsBox6Title,\r\n resultsBox7Value: data.resultsBox7Value,\r\n resultsBox7Title: data.resultsBox7Title,\r\n resultsBox8Value: data.resultsBox8Value,\r\n resultsBox8Title: data.resultsBox8Title\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(AccountingTable)\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport AccountingTable from './AccountingTable'\r\nimport { canSeeAccounting } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function Accounting() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setLoadingShow] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setLoadingShow(true)\r\n const data = await response.json()\r\n setShow(await canSeeAccounting(data))\r\n setLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Accounting' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport ShipmentsTable from './ShipmentsTable'\r\nimport { canSeeBooking } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function Booking() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setShow(await canSeeBooking(data))\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Bookings' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './CardTitle'\r\nimport { Tooltip, Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function ShipmentInfoCard({\r\n item,\r\n itemextra,\r\n showFirstRow,\r\n etd,\r\n eta,\r\n atd,\r\n ata,\r\n shipper,\r\n consignee,\r\n origin,\r\n destination,\r\n requestedDelivery = null,\r\n requiredPickup = null,\r\n showRequestedDelivery = false,\r\n showRequiredPickup = false,\r\n showRequiredETD = false,\r\n showRequiredETA = false,\r\n cargoReadyDate = null,\r\n transactiontype\r\n}) {\r\n const theme = useTheme()\r\n\r\n useEffect(() => {}, [])\r\n\r\n return (\r\n
\r\n
\r\n {transactiontype} Info\r\n
\r\n \r\n \r\n {showFirstRow && (\r\n \r\n \r\n \r\n {transactiontype} #\r\n \r\n

\r\n {(item !== null && item.shipmentNumber) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Inco Term\r\n \r\n

\r\n {(itemextra !== null &&\r\n itemextra.shipmentIncoTerm) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Service Level\r\n \r\n

\r\n {(itemextra !== null &&\r\n item.serviceLevel) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Transport Mode\r\n \r\n

\r\n {(item !== null && item.transportMode) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Masterbill #\r\n \r\n

\r\n {(itemextra !== null &&\r\n itemextra.masterBillNumber) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Housebill #\r\n \r\n

\r\n {(item !== null && item.houseBillNumber) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Packing Mode\r\n \r\n

\r\n {(itemextra !== null && item.packingMode) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n Consignee\r\n \r\n

\r\n {(item !== null && consignee) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Shipper\r\n \r\n

\r\n {(item !== null && shipper) || '-'}\r\n

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

\r\n
\r\n \r\n
\r\n
\r\n \r\n ETD\r\n \r\n

\r\n {(item !== null && etd) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n ATD\r\n \r\n

\r\n {(item !== null && atd) || '-'}\r\n

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

\r\n
\r\n \r\n
\r\n
\r\n \r\n ETA\r\n \r\n

\r\n {(item !== null && eta) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n ATA\r\n \r\n

\r\n {(item !== null && ata) || '-'}\r\n

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

\r\n
\r\n \r\n
\r\n \r\n Origin\r\n \r\n

\r\n {(item !== null && origin) || '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n Destination\r\n \r\n

\r\n {(item !== null && destination) || '-'}\r\n

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

\r\n
\r\n
\r\n )}\r\n \r\n \r\n
\r\n {showRequiredPickup && (\r\n \r\n
\r\n \r\n Required Pickup\r\n \r\n

\r\n {(item !== null &&\r\n requiredPickup\r\n ? requiredPickup\r\n : null) || '-'}\r\n

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

\r\n
\r\n {showRequiredETA && (\r\n \r\n
\r\n
\r\n \r\n Required ETA\r\n \r\n

\r\n {(item !== null && eta\r\n ? eta\r\n : null) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n )}\r\n {cargoReadyDate && (\r\n <>\r\n \r\n \r\n

\r\n \r\n \r\n
\r\n \r\n Cargo Ready Date\r\n \r\n

\r\n {cargoReadyDate || '-'}\r\n

\r\n
\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {showRequiredETD && (\r\n \r\n
\r\n \r\n Required ETD\r\n \r\n

\r\n {(item !== null && etd\r\n ? etd\r\n : null) || '-'}\r\n

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

\r\n
\r\n {showRequestedDelivery && (\r\n \r\n
\r\n
\r\n \r\n Required Delivery\r\n \r\n

\r\n {(item !== null &&\r\n requestedDelivery\r\n ? requestedDelivery\r\n : null) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport {\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n DialogContentText,\r\n Button,\r\n Divider\r\n} from '@material-ui/core'\r\n\r\nexport default class DialogOk extends React.Component {\r\n render() {\r\n if (!this.props.show) {\r\n return null\r\n }\r\n return (\r\n \r\n \r\n {' '}\r\n {this.props.title}\r\n \r\n {this.props.children}\r\n \r\n this.props.callback()}\r\n >\r\n Ok\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\nDialogOk.propTypes = {\r\n callback: PropTypes.func.isRequired,\r\n show: PropTypes.bool.isRequired,\r\n title: PropTypes.string.isRequired\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Button, Grid, TextField, FormControl } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Tooltip, Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport { NavLink } from 'react-router-dom'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport { retrievePageFields } from '../shared/Views'\r\nimport { updateShipment } from '../../api/api'\r\nimport { IconButton } from '@material-ui/core'\r\nimport SaveIcon from '@material-ui/icons/Save'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport DialogOk from '../shared/DialogOk'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function ShipmentDetailCard({\r\n item,\r\n itemextra,\r\n shippersRefLabel,\r\n shippersRef,\r\n ownerRef,\r\n orderRef,\r\n quantity,\r\n volumeLabel,\r\n volume,\r\n weight,\r\n organization,\r\n clientId,\r\n showOrders,\r\n showShippersRef = true,\r\n showOwnersRef = true,\r\n transactiontype\r\n}) {\r\n const [pageFields, setPageFields] = useState(null)\r\n const [hasChanges, setHasChanges] = useState(false)\r\n const [updatedShipment, setUpdatedShipment] = useState({\r\n ownersReference: ownerRef,\r\n shipmentNumber: null,\r\n customsNumber: item.shipmentNumber\r\n })\r\n const [updateAlert, setUpdateAlert] = useState({\r\n open: false,\r\n message: '',\r\n severity: 'success'\r\n })\r\n const [updatingShipment, setUpdatingShipment] = useState(false)\r\n const [originalOwnerRef, setOriginalOwnerRef] = useState(ownerRef)\r\n\r\n useEffect(() => {\r\n retrievePageFields('shipmentdetail', clientId).then(response => {\r\n setPageFields(response)\r\n })\r\n }, [])\r\n\r\n const theme = useTheme()\r\n\r\n const renderNavLinkOrderRef = (clientId, shipmentData) => {\r\n var orderRefs = shipmentData.orderReferenceNumber\r\n if (orderRefs) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (shipmentData.orders) {\r\n var order = shipmentData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return showOrders ? (\r\n \r\n {refnum}\r\n \r\n ) : (\r\n {refnum}\r\n )\r\n } else {\r\n return {refnum}\r\n }\r\n } else {\r\n return {refnum}\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>-\r\n }\r\n }\r\n\r\n const handleUpdateShipmentSuccess = () => {\r\n setUpdateAlert({\r\n open: true,\r\n message: 'Shipment updated successfully',\r\n severity: 'success'\r\n })\r\n setHasChanges(false)\r\n setUpdatingShipment(false)\r\n }\r\n\r\n const handleUpdateShipmentError = (error) => {\r\n setUpdateAlert({\r\n open: true,\r\n message: error,\r\n severity: 'error'\r\n })\r\n setUpdatingShipment(false)\r\n }\r\n\r\n const editField = field => {\r\n if (pageFields) {\r\n const requiredField = pageFields.find(\r\n pageField => pageField.field === field\r\n )\r\n if (requiredField) {\r\n return requiredField.editable\r\n }\r\n }\r\n return false\r\n }\r\n\r\n const handleChange = e => {\r\n setUpdatedShipment({\r\n ...updatedShipment,\r\n ownersReference: e.target.value\r\n })\r\n if (e.target.value !== originalOwnerRef) {\r\n setHasChanges(true)\r\n } else {\r\n setHasChanges(false)\r\n }\r\n }\r\n\r\n const renderOwnersRef = () => {\r\n\r\n // check if field exists in pageFields\r\n if (editField('details.ownerref')) {\r\n return (\r\n {\r\n handleChange(e)\r\n }}\r\n />\r\n )\r\n } else {\r\n return (\r\n

\r\n {(item !== null && ownerRef) || '-'}\r\n

\r\n )\r\n } \r\n }\r\n\r\n const handleShipmentSave = () => {\r\n setUpdatingShipment(true)\r\n updateShipment(updatedShipment, handleUpdateShipmentSuccess, handleUpdateShipmentError)\r\n }\r\n \r\n const handleCancel = () => {\r\n setUpdatedShipment({\r\n ownersReference: originalOwnerRef,\r\n shipmentNumber: null,\r\n customsNumber: item.shipmentNumber\r\n })\r\n setHasChanges(false)\r\n }\r\n\r\n const renderToolTipOrderRef = orderRef => {\r\n var orderRefs = ''\r\n var array = []\r\n if (item !== null && orderRef != null) {\r\n array = orderRef.split(',')\r\n if (array.length <= 2) {\r\n orderRefs = array.join()\r\n } else {\r\n orderRefs = array[0]\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {orderRefs}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}

\r\n \r\n }\r\n placement=\"right\"\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 {transactiontype} Details\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Weight\r\n \r\n

\r\n {' '}\r\n {(item !== null && weight) || '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n {volumeLabel}\r\n \r\n

\r\n {' '}\r\n {(item !== null && volume) || '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n Quantity\r\n \r\n

\r\n {' '}\r\n {(itemextra !== null &&\r\n itemextra.quantity) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n {showShippersRef && (\r\n \r\n
\r\n \r\n {shippersRefLabel}\r\n \r\n

\r\n {' '}\r\n {(item !== null && shippersRef) || '-'}\r\n

\r\n
\r\n
\r\n )}\r\n
\r\n {showOwnersRef ? (\r\n \r\n
\r\n \r\n Owner's Ref #\r\n \r\n {renderOwnersRef()}\r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n Order's Ref#\r\n \r\n

\r\n {' '}\r\n {orderRef\r\n ? renderToolTipOrderRef(orderRef)\r\n : '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n {' '}\r\n Description{' '}\r\n \r\n

\r\n {' '}\r\n {(item !== null && item.goodsDescription) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n {\r\n hasChanges && (\r\n <>\r\n \r\n {\r\n handleCancel()\r\n }}\r\n startIcon={}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n {\r\n handleShipmentSave()\r\n }}\r\n startIcon={}\r\n >\r\n Save\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
\r\n
\r\n {updatingShipment && }\r\n setUpdateAlert({ ...updateAlert, open: false })}\r\n >\r\n {updateAlert.message}\r\n \r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../shared/TableHelper'\r\nimport { Link, Button } from '@material-ui/core'\r\nimport DialogContainer from '../DialogContainer'\r\nimport CardTitle from '../shared/CardTitle'\r\nimport Alert from '@material-ui/lab/Alert'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nlet defaultContainers = [\r\n { key: 'containerNumber', label: 'Container #', icon: false, link: true },\r\n {\r\n key: 'containerTrackingLink',\r\n label: 'Tracking',\r\n icon: false,\r\n link: true\r\n },\r\n {\r\n key: 'openTrackLink',\r\n label: 'OpenTrack',\r\n icon: false,\r\n link: true\r\n },\r\n { key: 'sealNumber', label: 'Seal #', icon: false },\r\n { key: 'importReferenceNumber', label: 'Import Ref #', icon: false },\r\n { key: 'totalPacks', label: 'Packs', icon: false },\r\n { key: 'totalPacksUOM', label: 'Packs Type', icon: false },\r\n { key: 'containerType', label: 'Container Type', icon: false },\r\n { key: 'containerMode', label: 'Container Mode', icon: false },\r\n { key: 'tareWeight', label: 'Tare Weight', icon: false },\r\n { key: 'weight', label: 'Total Weight', icon: false },\r\n { key: 'deliveryMode', label: 'Delivery Mode', icon: false },\r\n { key: 'originGateIn', label: 'Export Gate In', icon: false },\r\n { key: 'wharfGateOut', label: 'Wharf Gate Out', icon: false },\r\n { key: 'estimatedDelivery', label: 'Est. Delivery', icon: false },\r\n { key: 'actualDelivery', label: 'Act. Delivery', icon: false },\r\n { key: 'estimatedReturn', label: 'Est. Return', icon: false },\r\n { key: 'actualReturn', label: 'Act. Return', icon: false }\r\n]\r\n\r\nconst normanHKContainers = [\r\n { key: 'containerNumber', label: 'Container #', icon: false, link: true },\r\n {\r\n key: 'containerTrackingLink',\r\n label: 'NG Tracking',\r\n icon: false,\r\n link: true\r\n },\r\n { key: 'sealNumber', label: 'Seal #', icon: false },\r\n { key: 'containerType', label: 'Container Type', icon: false },\r\n { key: 'containerMode', label: 'Container Mode', icon: false },\r\n { key: 'emptyReturnedOn', label: 'Empty Returned On', icon: false },\r\n { key: 'weight', label: 'Weight', icon: false },\r\n { key: 'deliveryMode', label: 'Delivery Mode', icon: false }\r\n]\r\n\r\nfunction getContainers(isNormanHK) {\r\n if (isNormanHK) {\r\n return normanHKContainers\r\n } else {\r\n return defaultContainers\r\n }\r\n}\r\n\r\nconst containersReview = [\r\n { key: 'containerTypeCode', label: 'Container Mode', icon: false },\r\n { key: 'numberOfContainers', label: 'Number of Containers', icon: false },\r\n { key: 'containerCommodityCode', label: 'Commodity', icon: false }\r\n]\r\n\r\nexport default function ShipmentContainersTable({\r\n itemextra,\r\n item,\r\n isReview,\r\n organization,\r\n client\r\n}) {\r\n const [dialogOpen, setDialogOpen] = useState(false)\r\n const [currentContainer, setCurrentContainer] = useState(null)\r\n const [containersList, setContainersList] = useState(null)\r\n\r\n const handleContainerDialogState = () => {\r\n setDialogOpen(!dialogOpen)\r\n }\r\n\r\n useEffect(() => {\r\n if (itemextra || item) {\r\n if (itemextra?.containers) {\r\n setContainersList(itemextra.containers)\r\n } else {\r\n setContainersList(item?.containers)\r\n }\r\n }\r\n }, [itemextra, item])\r\n\r\n if (!organization?.containerTrackingURL) {\r\n // remove tracking column\r\n defaultContainers = defaultContainers.filter(\r\n c => c.key !== 'containerTrackingLink'\r\n )\r\n }\r\n if (!organization?.isOpenTrackTracking && !client?.isOpenTrackTracking) {\r\n // remove open track column\r\n defaultContainers = defaultContainers.filter(\r\n c => c.key !== 'openTrackLink'\r\n )\r\n } else {\r\n // need to update the open track link label to value from organization\r\n defaultContainers = defaultContainers.map(c => {\r\n if (c.key === 'openTrackLink') {\r\n return {\r\n ...c,\r\n label: organization?.openTrackButtonTitle || 'OpenTrack'\r\n }\r\n }\r\n return c\r\n })\r\n }\r\n const renderContainerLink = (i, index, arrayKey) => {\r\n if (\r\n arrayKey.key === 'containerTrackingLink' &&\r\n organization.containerTrackingURL\r\n ) {\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n i['containerNumber']\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n View\r\n \r\n )\r\n }\r\n\r\n if (\r\n arrayKey.key === 'openTrackLink' &&\r\n (client.isOpenTrack || organization.isOpenTrack)\r\n ) {\r\n return (\r\n // check if value is null\r\n i[arrayKey.key] !== null && i[arrayKey.key] !== '' ? (\r\n {\r\n const newWindow = window.open(\r\n i[arrayKey.key],\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n View\r\n \r\n ) : (\r\n \r\n )\r\n )\r\n }\r\n\r\n if (arrayKey.key === 'containerNumber') {\r\n return (\r\n
\r\n {\r\n setCurrentContainer(i)\r\n handleContainerDialogState()\r\n }}\r\n >\r\n {' '}\r\n {i[arrayKey.key] || '-'}\r\n \r\n\r\n \r\n
\r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n {containersList ? (\r\n renderTable(\r\n containersList,\r\n isReview\r\n ? containersReview\r\n : getContainers(\r\n organization.shipmentServiceSelected == 'NORMANHK'\r\n ),\r\n 'container',\r\n classes,\r\n renderContainerLink,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )\r\n ) : (\r\n \r\n No records found.\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../shared/TableHelper'\r\nimport CardTitle from '../shared/CardTitle'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogContentText from '@material-ui/core/DialogContentText'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nconst containers = [\r\n { key: 'referenceNumber', label: 'Reference #' },\r\n { key: 'containerNumber', label: 'Container #' },\r\n { key: 'productCode', label: 'Product Code', link: true },\r\n { key: 'quantity', label: 'Pce Count' },\r\n { key: 'quantityUOM', label: 'Pce Count UOM' },\r\n { key: 'weight', label: 'Weight' },\r\n { key: 'weightUOM', label: 'Weight UOM' },\r\n { key: 'volume', label: 'Volume' },\r\n { key: 'volumeUOM', label: 'Volume UOM' },\r\n { key: 'dimensionLength', label: 'Length' },\r\n { key: 'dimensionWidth', label: 'Width' },\r\n { key: 'dimensionHeight', label: 'Height' },\r\n { key: 'dimensionUOM', label: 'Length UOM' },\r\n { key: 'commodityCode', label: 'Commodity' },\r\n { key: 'goodsDescription', label: 'Goods Description' }\r\n]\r\n\r\nconst normanHKContainers = [\r\n { key: 'weight', label: 'Weight' },\r\n { key: 'weightUOM', label: 'Weight UOM' },\r\n { key: 'quantity', label: 'Pce Count' },\r\n { key: 'quantityUOM', label: 'Pce Count UOM' },\r\n { key: 'commodityCode', label: 'Description' }\r\n]\r\n\r\nfunction getContainers(isNormanHK) {\r\n if (isNormanHK) {\r\n return normanHKContainers\r\n } else {\r\n return containers\r\n }\r\n}\r\n\r\nexport default function ShipmentPacklinesTable({ item, organization }) {\r\n const [productDialogOpen, setProductDialogOpen] = React.useState(false)\r\n\r\n const handleClose = () => {\r\n setProductDialogOpen(false)\r\n }\r\n\r\n const handleProductDialogClickOpen = () => {\r\n setProductDialogOpen(true)\r\n }\r\n\r\n const renderAllProductsDialog = productCodesArray => {\r\n return (\r\n <>\r\n {\r\n handleProductDialogClickOpen()\r\n }}\r\n >\r\n View Multiple Products\r\n \r\n \r\n \r\n {'Pack Line Products'}\r\n \r\n \r\n \r\n {productCodesArray.map((i, index) => {\r\n return

{i}

\r\n })}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const renderSpecialColumns = (i, index, arrayKey) => {\r\n if (arrayKey.key === 'productCode') {\r\n var orderRef = i[arrayKey.key]\r\n var array = []\r\n if (orderRef != null) {\r\n array = orderRef.split(',')\r\n }\r\n\r\n return array.length > 1\r\n ? renderAllProductsDialog(array)\r\n : i[arrayKey.key]\r\n }\r\n }\r\n\r\n return (\r\n \r\n {item !== null &&\r\n item !== undefined &&\r\n item.packLines !== null &&\r\n item.packLines !== undefined ? (\r\n renderTable(\r\n item.packLines,\r\n getContainers(\r\n organization?.shipmentServiceSelected == 'NORMANHK'\r\n ),\r\n 'container',\r\n classes,\r\n renderSpecialColumns,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )\r\n ) : (\r\n \r\n No records found.\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport InputLabel from '@material-ui/core/InputLabel'\r\nimport Input from '@material-ui/core/Input'\r\nimport FormControl from '@material-ui/core/FormControl'\r\nimport Select from '@material-ui/core/Select'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress, MenuItem } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport { downloadDocumentPDFForShipment } from '../../api/api'\r\nimport GetAppIcon from '@material-ui/icons/GetApp'\r\nimport { clientUserHasPermission } from '../../utils/permissions'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120\r\n },\r\n docTypeSelect: {}\r\n}))\r\n\r\nexport default function DocumentUploadSelectDialog(props) {\r\n const classes = useStyles()\r\n const [open, setOpen] = React.useState(false)\r\n const [doctype, setDocType] = React.useState('')\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [selectedFile, setSelectedFile] = React.useState(null)\r\n const [isSelected, setIsSelected] = React.useState(false)\r\n const [docTypes, setDocTypes] = React.useState(null)\r\n const [isAdmin, setIsAdmin] = React.useState(false)\r\n const [canUpload, setCanUpload] = React.useState(false)\r\n\r\n useEffect(() => {\r\n const getIsAdmin = async () => {\r\n const admin = await authService.isAdmin()\r\n const superAdmin = await authService.isSuperAdmin()\r\n setIsAdmin(admin || superAdmin)\r\n }\r\n getIsAdmin()\r\n }, [])\r\n\r\n useEffect(() => {\r\n const getUploadPermission = async () => {\r\n const canUpload = await clientUserHasPermission(\r\n props.clientId,\r\n 'uploaddocuments'\r\n )\r\n setCanUpload(canUpload)\r\n }\r\n getUploadPermission()\r\n }, [])\r\n\r\n const transactionNumber =\r\n props.transactiontype === 'shipment' ||\r\n props.transactiontype === 'booking' ||\r\n props.transactiontype === 'customs'\r\n ? props.transactionnumber\r\n : atob(\r\n props.transactionnumber.substring(\r\n 0,\r\n props.transactionnumber.indexOf('~')\r\n )\r\n ) +\r\n '/' +\r\n props.transactionnumber.substring(\r\n props.transactionnumber.indexOf('~') + 1,\r\n props.transactionnumber.length\r\n )\r\n\r\n const getTransactionNumber = () => {\r\n if (props.transactiontype === 'order') {\r\n return (\r\n atob(\r\n props.transactionnumber.substring(\r\n 0,\r\n props.transactionnumber.indexOf('~')\r\n )\r\n ) +\r\n '~' +\r\n props.transactionnumber.substring(\r\n props.transactionnumber.indexOf('~') + 1,\r\n props.transactionnumber.length\r\n ) +\r\n '~' +\r\n props.buyercode\r\n )\r\n } else {\r\n return props.transactionnumber\r\n }\r\n }\r\n\r\n const fetchDocTypes = React.useCallback(async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetCargowiseDocTypes?clientId=' +\r\n props.clientId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDocTypes(data)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n fetchDocTypes()\r\n }, [fetchDocTypes])\r\n\r\n const getTransactionTypeByName = name => {\r\n switch (name) {\r\n case 'shipment':\r\n return 1\r\n case 'booking':\r\n return 2\r\n case 'customs':\r\n return 0\r\n case 'order':\r\n return 3\r\n }\r\n }\r\n\r\n const downloadAllDocuments = () => {\r\n var docData = {\r\n TransactionNumber: getTransactionNumber(),\r\n TransactionType: getTransactionTypeByName(props.transactiontype),\r\n DownloadAll: true,\r\n ClientId: props.clientId\r\n }\r\n downloadDocumentPDFForShipment(\r\n docData,\r\n (blob, headers) => {\r\n var sanitize = require('sanitize-filename')\r\n const filename = sanitize(\r\n headers\r\n .get('Content-Disposition')\r\n .split('filename=')[1]\r\n .split(';')[0]\r\n )\r\n\r\n const url = window.URL.createObjectURL(new Blob([blob]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', filename)\r\n document.body.appendChild(link)\r\n link.click()\r\n link.parentNode.removeChild(link)\r\n },\r\n () => {}\r\n )\r\n }\r\n\r\n const handleChange = event => {\r\n setDocType(event.target.value || '')\r\n }\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true)\r\n }\r\n\r\n const handleClose = () => {\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n setDocType('')\r\n setOpen(false)\r\n }\r\n\r\n const handleSuccess = () => {\r\n setIsSuccess(true)\r\n // reload page\r\n setInterval(function () {\r\n setIsSuccess(false)\r\n setOpen(false)\r\n }, 4000)\r\n window.location.reload()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const changeHandler = event => {\r\n const selectedFile = event.target.files[0]\r\n const fileSizeLimit = props.organization.cargowiseEDocSizeLimit\r\n if (selectedFile.size / (1024 * 1024) <= fileSizeLimit) {\r\n setIsSelected(true)\r\n setSelectedFile(selectedFile)\r\n setIsError(false)\r\n } else {\r\n setIsSelected(false)\r\n setIsError(true)\r\n setErrorMessage(\r\n `File size is too large. Please select a file smaller than ${fileSizeLimit} MB.`\r\n )\r\n setSelectedFile(null)\r\n event.target.value = ''\r\n }\r\n }\r\n\r\n const handleSubmission = async () => {\r\n if (selectedFile === null) {\r\n setIsError(true)\r\n setErrorMessage('No file selected!')\r\n } else if (doctype === '') {\r\n setIsError(true)\r\n setErrorMessage('No document type selected!')\r\n } else {\r\n setIsError(false)\r\n setIsSuccess(false)\r\n setErrorMessage('')\r\n setIsLoading(true)\r\n\r\n const formData = new FormData()\r\n formData.append('File', selectedFile)\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*'\r\n }\r\n\r\n fetch(\r\n 'api/DataManagement/UploadCargowiseDocument?' +\r\n 'doctype=' +\r\n doctype +\r\n '&filename=' +\r\n btoa(encodeURIComponent(selectedFile.name)).replace(\r\n '/',\r\n '_'\r\n ) +\r\n '&transactiontype=' +\r\n props.transactiontype +\r\n '&transactionnumber=' +\r\n props.transactionnumber +\r\n '&buyercode=' +\r\n props.buyercode +\r\n '&clientId=' +\r\n props.clientId +\r\n '&transportmode=' +\r\n props.transportmode,\r\n {\r\n headers: header,\r\n method: 'POST',\r\n body: formData\r\n }\r\n )\r\n .then(response => {\r\n if (response.ok) {\r\n setIsLoading(false)\r\n handleSuccess()\r\n } else {\r\n if (response.status === 401) {\r\n setIsLoading(false)\r\n handleError('Not authorized to upload documents.')\r\n } else {\r\n setIsLoading(false)\r\n handleError('Document upload failed, please retry.')\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n setIsLoading(false)\r\n console.log(error)\r\n handleError('Document upload failed, please retry.')\r\n })\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {canUpload || isAdmin ? (\r\n \r\n \r\n Add\r\n \r\n ) : null}\r\n \r\n \r\n Download All\r\n \r\n \r\n \r\n Upload New Document |{' '}\r\n {props.transactiontype.substring(0, 1).toUpperCase() +\r\n props.transactiontype.substring(1)}{' '}\r\n {transactionNumber}\r\n \r\n \r\n
\r\n \r\n \r\n Document Type\r\n \r\n \r\n }\r\n >\r\n \r\n None\r\n \r\n {docTypes !== null\r\n ? docTypes.map(type => (\r\n \r\n {type.documentDescription}\r\n \r\n ))\r\n : null}\r\n \r\n \r\n
\r\n
\r\n {isLoading && }\r\n \r\n \r\n {isSelected ? (\r\n
\r\n

Filename: {selectedFile.name}

\r\n

Type: {selectedFile.type}

\r\n

\r\n Size:{' '}\r\n {parseInt(Number(selectedFile.size) / 1000)}kb\r\n

\r\n

\r\n Last Modified:{' '}\r\n {selectedFile.lastModifiedDate.toLocaleDateString()}\r\n

\r\n
\r\n ) : (\r\n

Select a file to show details

\r\n )}\r\n \r\n \r\n
\r\n {isSuccess && (\r\n \r\n Document successfully uploaded!\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import DateFnsUtils from '@date-io/moment'\r\n\r\nexport const dateUTCToLocalString = (date) => {\r\n const dateFns = new DateFnsUtils()\r\n if (!date) return '-'\r\n return dateFns.moment.utc(date).local().format('YYYY-MM-DD HH:mm:ss')\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport Divider from '@material-ui/core/Divider'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar'\r\nimport Avatar from '@material-ui/core/Avatar'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CardTitle from '../shared/CardTitle'\r\nimport { dateUTCToLocalString } from '../../utils/dates'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120\r\n },\r\n docTypeSelect: {},\r\n root: {\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n inline: {\r\n display: 'inline'\r\n }\r\n}))\r\n\r\nexport default function TransactionCommentsCard(props) {\r\n const classes = useStyles()\r\n const [transactionComments, setTransactionComments] = React.useState(\r\n props.transactionComments\r\n )\r\n\r\n return (\r\n <>\r\n \r\n {transactionComments?.length === 0 && (\r\n \r\n No records found.\r\n \r\n )}\r\n \r\n {transactionComments?.map((comm, index) => {\r\n const avatarText =\r\n comm.userFirstName.charAt(0) +\r\n comm.userLastName.charAt(0)\r\n return (\r\n <>\r\n \r\n \r\n {avatarText}\r\n \r\n \r\n }\r\n secondary={\r\n \r\n \r\n {comm.userFirstName +\r\n ' ' +\r\n comm.userLastName}\r\n \r\n \r\n {comm.date\r\n ? ' (' +\r\n dateUTCToLocalString(comm.date) +\r\n ')'\r\n : ''}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport Input from '@material-ui/core/Input'\r\nimport FormControl from '@material-ui/core/FormControl'\r\nimport Select from '@material-ui/core/Select'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress, MenuItem } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport { downloadDocumentPDFForShipment } from '../../api/api'\r\nimport GetAppIcon from '@material-ui/icons/GetApp'\r\nimport { TextField } from '@material-ui/core'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport Divider from '@material-ui/core/Divider'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar'\r\nimport Avatar from '@material-ui/core/Avatar'\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120\r\n },\r\n docTypeSelect: {},\r\n root: {\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper\r\n },\r\n inline: {\r\n display: 'inline'\r\n }\r\n}))\r\n\r\nexport default function TransactionCommentsHeaderCard(props) {\r\n const classes = useStyles()\r\n const [open, setOpen] = React.useState(false)\r\n const [doctype, setDocType] = React.useState('')\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [newComment, setNewComment] = React.useState('')\r\n\r\n // need to expand this to work for orders as well\r\n const transactionNumber =\r\n props.transactiontype === 'shipment' ||\r\n props.transactiontype === 'booking' ||\r\n props.transactiontype === 'customs'\r\n ? props.transactionnumber\r\n : null\r\n\r\n const getTransactionTypeByName = name => {\r\n switch (name) {\r\n case 'shipment':\r\n return 1\r\n case 'booking':\r\n return 2\r\n case 'customs':\r\n return 0\r\n case 'order':\r\n return 3\r\n }\r\n }\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true)\r\n }\r\n\r\n const handleClose = () => {\r\n setOpen(false)\r\n }\r\n\r\n const handleSuccess = () => {\r\n setIsSuccess(true)\r\n // reload page\r\n setInterval(function () {\r\n setIsSuccess(false)\r\n setOpen(false)\r\n }, 3000)\r\n window.location.reload()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const handleSubmission = async () => {\r\n if (newComment === '') {\r\n setIsError(true)\r\n setErrorMessage('No comment entered!')\r\n } else {\r\n setIsError(false)\r\n setIsSuccess(false)\r\n setErrorMessage('')\r\n setIsLoading(true)\r\n\r\n const requestBody = {\r\n transactionNumber: transactionNumber,\r\n transactionType: getTransactionTypeByName(\r\n props.transactiontype\r\n ),\r\n comment: newComment,\r\n clientId: props.clientId,\r\n transportMode: props.transportMode\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n const response = await fetch('api/Comments/AddComment', {\r\n method: 'POST',\r\n headers: header,\r\n body: JSON.stringify(requestBody)\r\n })\r\n\r\n if (response.status === 200) {\r\n handleSuccess()\r\n } else if (response.status === 401) {\r\n handleError('You do not have permission to add a comment!')\r\n } else {\r\n handleError(\r\n 'An error occurred while adding a comment - please contact support.'\r\n )\r\n }\r\n\r\n setIsLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n Add\r\n \r\n \r\n \r\n Add New Comment |{' '}\r\n {props.transactiontype.substring(0, 1).toUpperCase() +\r\n props.transactiontype.substring(1)}{' '}\r\n {transactionNumber}\r\n \r\n \r\n
\r\n
\r\n \r\n setNewComment(e.target.value)}\r\n />\r\n \r\n
\r\n
\r\n {isLoading && }\r\n \r\n \r\n \r\n \r\n {isSuccess && (\r\n \r\n Comment Successfully Added!\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React, { Suspense, PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { Grid } from '@material-ui/core'\r\nimport { Card } from '@material-ui/core'\r\nimport { LinearProgress, Typography } from '@material-ui/core'\r\nimport { renderDetailMap } from '../components/shared/MapHelper'\r\nimport { renderTable } from '../components/shared/TableHelper'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { Paper } from '@material-ui/core'\r\nimport { Link } from '@material-ui/core'\r\nimport { CardContent } from '@material-ui/core'\r\nimport ShipmentInfoCard from './shared/ShipmentInfoCard'\r\nimport ShipmentDetailCard from './shared/ShipmentDetailCard'\r\nimport ShipmentContainersTable from './shared/ShipmentContainersTable'\r\nimport ShipmentPacklinesTable from './shared/ShipmentPacklinesTable'\r\nimport { downloadInvoicePDFForShipment } from '../api/api'\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel'\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport DocumentUploadSelectDialog from './shared/DocumentUploadSelectDialog'\r\nimport TransactionCommentsCard from './shared/TransactionCommentsCard'\r\nimport TransactionCommentsHeaderCard from './shared/TransactionCommentsHeaderCard'\r\nimport { getOrgViewCodeFromOrganization } from '../utils/organizations'\r\nimport { canSeeAccounting, canSeeOrders } from '../utils/permissions'\r\nimport ShipmentRoutingCard from './shared/ShipmentRoutingCard'\r\nimport BookingApprovalButton from './BookingApprovalButton'\r\nimport BookingRejectButton from './BookingRejectButton'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n bgColorSection: {\r\n backgroundColor: theme.bgColorSection\r\n }\r\n})\r\n\r\n// we need to lazy load due to speed of downloading docs\r\nconst ShipmentDocumentsCard = React.lazy(() =>\r\n import('./shared/ShipmentDocumentsCard')\r\n)\r\n\r\nconst bgColorSection = 'bg-white text-dark'\r\n\r\nconst milestones = [\r\n {\r\n key: 'description',\r\n label: 'Description',\r\n icon: true\r\n },\r\n {\r\n key: 'estimatedDate',\r\n label: 'Estimate',\r\n icon: false\r\n },\r\n {\r\n key: 'actualDate',\r\n label: 'Actual',\r\n icon: false\r\n }\r\n]\r\n\r\nconst referenceNumbers = [\r\n { key: 'numberType', label: 'Number Type', icon: false },\r\n { key: 'numberRef', label: 'Number', icon: false },\r\n { key: 'typeDescription', label: 'Type Description', icon: false }\r\n]\r\n\r\nconst notes = [\r\n { key: 'title', label: 'Note Type', icon: false },\r\n { key: 'date', label: 'Date', icon: false },\r\n { key: 'note', label: 'Detail', icon: false }\r\n]\r\n\r\nconst invoices = [\r\n { key: 'invoiceNumber', label: 'Invoice Number', icon: false, link: true },\r\n { key: 'description', label: 'Description', icon: false }\r\n]\r\n\r\nclass ShipmentDetailPage extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n clientId: props.match.params.clientId,\r\n shipmentId: props.match.params.shipmentId,\r\n containerId: props.match.params.containerId,\r\n item: null,\r\n itemextra: null,\r\n loading: true,\r\n error: false,\r\n errorMessage: '',\r\n dialogOpen: false,\r\n selectedContainer: {},\r\n organization: null,\r\n expanded: 'panel1',\r\n uri: props.uri || 'GetShipment',\r\n client: null,\r\n showInvoices: false,\r\n showOrders: false,\r\n transactiontype: props.uri.replace('Get', ''),\r\n orgViewCode: null,\r\n }\r\n\r\n this.showDialog = this.showDialog.bind(this)\r\n this.populateShipmentData = this.populateShipmentData.bind(this)\r\n this.fetchAllShipmentData = this.fetchAllShipmentData.bind(this)\r\n this.fetchExtraShipmentData = this.fetchExtraShipmentData.bind(this)\r\n this.handleACCChange = this.handleACCChange.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n await this.getOrgViewCode()\r\n await this.populateShipmentData()\r\n }\r\n\r\n getTransactionTypeByURI(uri) {\r\n switch (uri) {\r\n case 'GetShipment':\r\n return 'shipment'\r\n case 'GetCustoms':\r\n return 'customs'\r\n case 'GetBooking':\r\n return 'booking'\r\n }\r\n return 'shipment'\r\n }\r\n\r\n showDialog(container) {\r\n const { item, itemextra } = this.state\r\n\r\n this.setState({\r\n dialogOpen: true,\r\n selectedContainer: container\r\n })\r\n\r\n this.setState(prevState => {\r\n let selectedContainer = Object.assign(\r\n {},\r\n prevState.selectedContainer\r\n )\r\n selectedContainer['geoLocationOrigin'] = item.geoLocationOrigin\r\n selectedContainer['geoLocationDestination'] =\r\n item.geoLocationDestination\r\n selectedContainer['geoLocationPortOfLoading'] =\r\n item.geoLocationPortOfLoading\r\n selectedContainer['geoLocationPortOfDischarge'] =\r\n item.geoLocationPortOfDischarge\r\n selectedContainer['geoLocationCurrentLocation'] =\r\n itemextra.geoLocationCurrentLocation\r\n\r\n return { selectedContainer }\r\n })\r\n\r\n this.setState(prevState => {\r\n let selectedContainer = Object.assign(\r\n {},\r\n prevState.selectedContainer\r\n )\r\n selectedContainer['mode'] = item.mode || item.transportMode\r\n\r\n return { selectedContainer }\r\n })\r\n }\r\n\r\n handleActionsDialog = action => {\r\n this.setState({\r\n dialogOpen: !this.state.dialogOpen\r\n })\r\n }\r\n\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n\r\n goBack = () => {\r\n localStorage.setItem('referredFromDetailPage', JSON.stringify(true))\r\n this.props.history.goBack()\r\n }\r\n\r\n renderInvoiceLink = (i, index, arrayKey) => {\r\n const { item, clientId, showInvoices } = this.state\r\n\r\n const handleDownloadInvoicePDF = async (invoiceNumber, clientId) => {\r\n downloadInvoicePDFForShipment(\r\n invoiceNumber,\r\n clientId,\r\n (blob, headers) => {\r\n const filename = headers\r\n .get('Content-Disposition')\r\n .split('filename=')[1]\r\n .split(';')[0]\r\n\r\n const newFilename = filename.slice(1, filename.length - 1)\r\n\r\n const url = window.URL.createObjectURL(new Blob([blob]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', newFilename)\r\n document.body.appendChild(link)\r\n link.click()\r\n link.parentNode.removeChild(link)\r\n },\r\n () => {}\r\n )\r\n }\r\n\r\n return (\r\n
\r\n {showInvoices && i[arrayKey.key] ? (\r\n {\r\n handleDownloadInvoicePDF(i[arrayKey.key], clientId)\r\n }}\r\n >\r\n {' '}\r\n {i[arrayKey.key] || '-'}\r\n \r\n ) : (\r\n i[arrayKey.key] || '-'\r\n )}\r\n
\r\n )\r\n }\r\n\r\n renderMilestones = () => {\r\n const { itemextra } = this.state\r\n const { classes } = this.props\r\n\r\n var shipmentMilestones = itemextra.milestones ?? []\r\n var consolMilestones = itemextra.consolMilestones ?? []\r\n var sortedMilestones = shipmentMilestones.concat(consolMilestones)\r\n sortedMilestones.sort((a, b) => {\r\n // sort by sequence property\r\n return a.sequence - b.sequence\r\n })\r\n\r\n return (\r\n \r\n {itemextra?.milestones ? (\r\n renderTable(\r\n sortedMilestones,\r\n milestones,\r\n 'milestones',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )\r\n ) : (\r\n \r\n No records found.\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n renderReferenceNumbers = () => {\r\n const { itemextra } = this.state\r\n const { classes } = this.props\r\n\r\n return (\r\n \r\n {renderTable(\r\n itemextra?.referenceNumbers ?? [],\r\n referenceNumbers,\r\n 'referenceNumbers',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n )\r\n }\r\n\r\n renderNotes = () => {\r\n const { itemextra } = this.state\r\n const { classes } = this.props\r\n\r\n return (\r\n \r\n {renderTable(\r\n itemextra?.notes ?? [],\r\n notes,\r\n 'notes',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n )\r\n }\r\n\r\n renderInvoices = () => {\r\n const { item } = this.state\r\n const { classes } = this.props\r\n\r\n if (item === null) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n {renderTable(\r\n item?.invoices ?? [],\r\n invoices,\r\n 'invoices',\r\n classes,\r\n this.renderInvoiceLink,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n )\r\n }\r\n\r\n renderPickupInfo = () => {\r\n const { itemextra, organization } = this.state\r\n return (\r\n
\r\n
Pickup Info
\r\n\r\n \r\n \r\n
\r\n \r\n Addresss\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.name) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.addresLine1) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.city) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.state) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.postalCode) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.pickupInfo?.country) ||\r\n ''}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n renderDeliveryInfo = () => {\r\n const { itemextra, organization } = this.state\r\n return (\r\n
\r\n
Delivery Info
\r\n \r\n \r\n
\r\n \r\n Address\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.name) ||\r\n ''}\r\n \r\n
\r\n {itemextra?.deliveryInfo?.shortCode && (\r\n <>\r\n \r\n {itemextra.deliveryInfo.shortCode}\r\n \r\n
\r\n \r\n )}\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.addresLine1) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.city) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.state) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.postalCode) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo?.country) ||\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 const {\r\n loading,\r\n error,\r\n errorMessage,\r\n item,\r\n itemextra,\r\n dialogOpen,\r\n organization,\r\n expanded,\r\n selectedContainer,\r\n client,\r\n uri,\r\n showOrders,\r\n orgViewCode\r\n } = this.state\r\n\r\n let contents = loading ? (\r\n \r\n ) : (\r\n <>\r\n {error && (\r\n <>\r\n {\r\n this.setState({ error: false })\r\n }}\r\n severity=\"warning\"\r\n >\r\n {errorMessage}\r\n \r\n
\r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {' '}\r\n \r\n Go Back...\r\n \r\n \r\n \r\n {this.renderActionButtons()}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {item != null && (\r\n \r\n )}\r\n
\r\n
\r\n {item != null && (\r\n \r\n c.key ===\r\n 'CustomerPO'\r\n )?.value\r\n : item.shippersReferenceNumber\r\n }\r\n ownerRef={item.ownerRef}\r\n orderRef={\r\n organization?.shipmentServiceSelected ==\r\n 'NORMANHK'\r\n ? item.orderReferenceNumber\r\n : item.orderRef\r\n }\r\n showOrders={showOrders}\r\n quantity={item.quantity}\r\n volumeLabel=\"Volume\"\r\n volume={item.volume}\r\n weight={item.weight}\r\n shippersRefLabel={\r\n organization?.shipmentServiceSelected ==\r\n 'NORMANHK'\r\n ? 'Booking Ref'\r\n : orgViewCode ===\r\n 916\r\n ? 'Customer PO #'\r\n : \"Shipper's Ref\"\r\n }\r\n organization={\r\n organization\r\n }\r\n clientId={\r\n this.state.clientId\r\n }\r\n transactiontype={\r\n this.state\r\n .transactiontype\r\n }\r\n />\r\n )}\r\n
\r\n \r\n\r\n \r\n \r\n {renderDetailMap(\r\n item.shipmentNumber,\r\n item,\r\n itemextra,\r\n organization,\r\n '550px'\r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.renderPickupInfo()}\r\n \r\n \r\n {this.renderDeliveryInfo()}\r\n \r\n \r\n
\r\n {itemextra &&\r\n itemextra.hideRoutingInfo === false && (\r\n <>\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n }\r\n className=\"p-0\"\r\n >\r\n \r\n

\r\n Routing\r\n

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

\r\n Milestones, Notes &\r\n Comments\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Milestones\r\n
\r\n
\r\n {this.renderMilestones()}\r\n
\r\n \r\n \r\n
\r\n Notes\r\n
\r\n
\r\n {this.renderNotes()}\r\n
\r\n \r\n \r\n
\r\n Comments\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n

\r\n Documents, Reference\r\n Numbers & Invoices\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Documents\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n Reference\r\n Numbers\r\n
\r\n
\r\n {this.renderReferenceNumbers()}\r\n
\r\n \r\n \r\n
\r\n Invoices\r\n
\r\n
\r\n {this.renderInvoices()}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n

\r\n Pack Lines{' '}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n

\r\n Containers\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\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
{contents}
\r\n }\r\n\r\n renderActionButtons() {\r\n const { uri } = this.props\r\n const { item, clientId } = this.state\r\n const transactionType = this.getTransactionTypeByURI(uri)\r\n \r\n if (transactionType === 'booking') {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n return null\r\n }\r\n\r\n async getOrgViewCode() {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n this.setState({ orgViewCode: viewCode })\r\n }\r\n\r\n async populateShipmentData() {\r\n this.fetchAllShipmentData()\r\n .then(([shipment, orgConfig, clientData]) => {\r\n canSeeAccounting(orgConfig).then(showInvoices => {\r\n this.setState({ showInvoices: showInvoices })\r\n })\r\n canSeeOrders(orgConfig).then(showOrders => {\r\n this.setState({ showOrders: showOrders })\r\n })\r\n this.setState(\r\n {\r\n item: shipment,\r\n organization: orgConfig,\r\n client: clientData\r\n },\r\n () => {\r\n this.fetchExtraShipmentData()\r\n .then(([shipmentExtra]) => {\r\n shipmentExtra.geoLocationDestination =\r\n shipmentExtra.geoLocationDestination ??\r\n shipment.geoLocationDestination\r\n shipmentExtra.geoLocationOrigin =\r\n shipmentExtra.geoLocationOrigin ??\r\n shipment.geoLocationOrigin\r\n this.setState({\r\n itemextra: shipmentExtra,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n loading: false,\r\n error: true,\r\n errorMessage:\r\n 'Unable to fetch shipment details from Cargowise One. Please try again later.'\r\n })\r\n })\r\n }\r\n )\r\n })\r\n .catch(error => {\r\n this.setState({\r\n loading: false,\r\n error: true,\r\n errorMessage:\r\n 'Unable to fetch shipment details. Please try again later.'\r\n })\r\n })\r\n }\r\n\r\n async fetchAllShipmentData() {\r\n const { shipmentId, clientId, uri } = this.state\r\n const queryString = require('query-string')\r\n\r\n const qs = {\r\n ClientId: clientId,\r\n ShipmentSearchNumber: shipmentId\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const [shipmentResponse, orgConfigResponse, clientDataResponse] =\r\n await Promise.all([\r\n fetch(`api/shipments/${uri}?` + queryString.stringify(qs), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }),\r\n fetch(\r\n 'api' + ApplicationPaths.AppInfo + '?clientId=' + clientId\r\n ),\r\n fetch(`api/clients/` + clientId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n ])\r\n\r\n const shipment = await shipmentResponse.json()\r\n const orgConfig = await orgConfigResponse.json()\r\n const clientData = await clientDataResponse.json()\r\n\r\n return [shipment, orgConfig, clientData]\r\n }\r\n\r\n async fetchExtraShipmentData() {\r\n const { shipmentId, clientId, uri } = this.state\r\n const queryString = require('query-string')\r\n\r\n const qs = {\r\n ClientId: clientId,\r\n ShipmentSearchNumber: shipmentId\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const [shipmentExtraResponse] = await Promise.all([\r\n fetch(`api/shipments/${uri}extra?` + queryString.stringify(qs), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n ])\r\n\r\n const shipmentExtra = await shipmentExtraResponse.json()\r\n\r\n return [shipmentExtra]\r\n }\r\n}\r\n\r\nexport default withStyles(styles, { withTheme: true })(ShipmentDetailPage)\r\n","import React, { PureComponent } from 'react'\r\nimport ShipmentDetailPage from './ShipmentDetailPage'\r\n\r\nclass BookingDetails extends PureComponent {\r\n render() {\r\n let contents = \r\n return
{contents}
\r\n }\r\n}\r\nexport default BookingDetails","import React, { PureComponent } from 'react'\r\nimport ShipmentDetailPage from './ShipmentDetailPage'\r\n\r\nclass ShipmentDetails extends PureComponent {\r\n render() {\r\n let contents = \r\n\r\n return
{contents}
\r\n }\r\n}\r\nexport default ShipmentDetails\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport ShipmentsTable from './ShipmentsTable'\r\nimport { canSeeCustoms } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function Customs() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setShow(await canSeeCustoms(data))\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Customs' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport ShipmentDetailPage from './ShipmentDetailPage'\r\n\r\nclass CustomDetails extends PureComponent {\r\n render() {\r\n let contents = \r\n\r\n return
{contents}
\r\n }\r\n}\r\nexport default CustomDetails\r\n","import React, { PureComponent } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport Alert from '@material-ui/lab/Alert'\r\n\r\nexport default class AlertMessage extends PureComponent {\r\n render() {\r\n if (!this.props.open) {\r\n return null\r\n }\r\n return (\r\n this.props.onClose(false)}\r\n severity={this.props.success ? 'success' : 'error'}\r\n >\r\n {this.props.message}\r\n \r\n )\r\n }\r\n}\r\nAlertMessage.propTypes = {\r\n onClose: PropTypes.func.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n success: PropTypes.bool.isRequired,\r\n message: PropTypes.string.isRequired\r\n}\r\n","import React from 'react'\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle\r\n} from '@material-ui/core'\r\nimport PropTypes from 'prop-types'\r\n\r\nexport const CustomDialog = ({\r\n isOpen,\r\n handleClose,\r\n title,\r\n subtitle,\r\n children\r\n}) => {\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n {subtitle}\r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nCustomDialog.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n handleClose: PropTypes.func.isRequired,\r\n title: PropTypes.string.isRequired,\r\n subtitle: PropTypes.string,\r\n children: PropTypes.element.isRequired\r\n}\r\n","import React from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle'\r\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'\r\nimport RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked'\r\nimport IconButton from '@material-ui/core/IconButton'\r\n\r\nexport default function ShipmentCreationProgress({\r\n client,\r\n index,\r\n hideContainers = false\r\n}) {\r\n const clientBookingSteps = client?.bookingSteps ? JSON.parse(client.bookingSteps) : []\r\n\r\n const renderStepButton = (step, checked, current) => {\r\n return (\r\n (window.location.href = step.href)}\r\n >\r\n {current ? (\r\n \r\n ) : checked ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n const renderStep = (step, i) => {\r\n if (hideContainers && step.index === 3) {\r\n return null\r\n }\r\n\r\n if (step.enabled === true) {\r\n return (\r\n \r\n \r\n {step.index < index &&\r\n renderStepButton(step, true, false)}\r\n {step.index > index &&\r\n renderStepButton(step, false, false)}\r\n {step.index === index &&\r\n renderStepButton(step, false, true)}\r\n \r\n \r\n {step.name}\r\n \r\n \r\n )\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n {clientBookingSteps.map((step, i) => {\r\n return renderStep(step, i)\r\n })}\r\n \r\n
\r\n )\r\n}\r\n","const dataTypesKey = 'shipment.create.dataTypes'\r\n\r\nexport const getDataMapping = () => {\r\n return JSON.parse(sessionStorage.getItem(dataTypesKey))\r\n}\r\n\r\nexport const setDataMapping = data => {\r\n sessionStorage.setItem(dataTypesKey, data)\r\n}\r\n\r\nexport const deleteDataMapping = data => {\r\n sessionStorage.removeItem(dataTypesKey)\r\n}\r\n\r\nexport const getModuleNameByKey = key => {\r\n switch (key) {\r\n case 'ShipmentCreate':\r\n return 'Create Booking'\r\n case 'CreateOrder':\r\n return 'Create Order'\r\n case 'ShipmentSearch':\r\n return 'Shipments'\r\n case 'Customs':\r\n return 'Customs'\r\n case 'Accounting':\r\n return 'Accounting'\r\n case 'Booking':\r\n return 'Bookings'\r\n case 'Order':\r\n return 'Orders'\r\n case 'Container':\r\n return 'Containers'\r\n default:\r\n return ''\r\n }\r\n}\r\n","const shipmentIdKey = 'shipment.create.shipmentId'\r\n\r\nexport const isNotFclOrFtl = containerType => {\r\n return containerType !== 'FCL' && containerType !== 'FTL'\r\n}\r\n\r\nexport const getShipmentKey = () => {\r\n return sessionStorage.getItem(shipmentIdKey)\r\n}\r\n\r\nexport const removeShipmentKey = () => {\r\n return sessionStorage.removeItem(shipmentIdKey)\r\n}\r\n","import { isNotFclOrFtl } from '../../utils/shipment'\r\n\r\nexport const getNextEnabledBookingStep = (\r\n currentStep,\r\n bookingSteps,\r\n containerType\r\n) => {\r\n bookingSteps = JSON.parse(bookingSteps)\r\n let nextStep = currentStep + 1\r\n while (nextStep < bookingSteps.length) {\r\n if (bookingSteps[nextStep].enabled) {\r\n if (nextStep === 3 && isNotFclOrFtl(containerType)) {\r\n return bookingSteps[4]\r\n } else {\r\n return bookingSteps[nextStep]\r\n }\r\n }\r\n nextStep++\r\n }\r\n return bookingSteps[nextStep]\r\n}\r\n\r\nexport const getPreviousEnabledBookingStep = (\r\n currentStep,\r\n bookingSteps,\r\n containerType\r\n) => {\r\n bookingSteps = JSON.parse(bookingSteps)\r\n let previousStep = currentStep - 1\r\n while (previousStep >= 0) {\r\n if (bookingSteps[previousStep].enabled) {\r\n if (previousStep === 3 && isNotFclOrFtl(containerType)) {\r\n // continue\r\n } else {\r\n return bookingSteps[previousStep]\r\n }\r\n }\r\n previousStep--\r\n }\r\n return bookingSteps[previousStep]\r\n}\r\n\r\nexport const hasAccessToStep = (step, bookingSteps, containerType) => {\r\n bookingSteps = JSON.parse(bookingSteps)\r\n if (step === 3 && isNotFclOrFtl(containerType)) {\r\n return false\r\n }\r\n return bookingSteps[step].enabled\r\n}\r\n","/**\r\n * Attempts to parse a string as an integer, returning the parsed value if the string represents a valid number,\r\n * or the defaultValue if the string is empty or not a valid number.\r\n * @param input The string to parse.\r\n * @param defaultValue The value to return if the string is empty or not a valid number.\r\n * @return A parsed integer, or the defaultValue if the string could not be parsed.\r\n */\r\nexport const tryParseInt = (input, defaultValue) => {\r\n var retValue = defaultValue\r\n\r\n // If the input is a string, try to parse it as an integer.\r\n if (typeof input === 'string') {\r\n if (input.length > 0) {\r\n if (!isNaN(input)) {\r\n retValue = parseInt(input)\r\n }\r\n }\r\n }\r\n\r\n // If the input is a number, return it as an integer.\r\n else if (typeof input === 'number') {\r\n retValue = parseInt(input)\r\n }\r\n\r\n return retValue\r\n}\r\n\r\n/**\r\n * Attempts to parse a string as a floating point number, returning the parsed value if the string represents a valid number,\r\n * or the defaultValue if the string is empty or not a valid number.\r\n * @param input The string to parse.\r\n * @param defaultValue The value to return if the string is empty or not a valid number.\r\n * @return A parsed floating point number, or the defaultValue if the string could not be parsed.\r\n */\r\nexport const tryParseFloat = (input, defaultValue) => {\r\n var retValue = defaultValue\r\n\r\n // If the input is a string, try to parse it as a floating point number.\r\n if (typeof input === 'string') {\r\n if (input.length > 0) {\r\n if (!isNaN(input)) {\r\n retValue = parseFloat(input)\r\n }\r\n }\r\n }\r\n\r\n // If the input is a number, return it as a floating point number.\r\n else if (typeof input === 'number') {\r\n retValue = parseFloat(input)\r\n }\r\n\r\n return retValue\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { CardContent, Grid } from '@material-ui/core'\r\nimport {\r\n FormControl,\r\n TextField,\r\n Button,\r\n List,\r\n ListItem\r\n} from '@material-ui/core'\r\nimport Autocomplete from '@material-ui/lab/Autocomplete'\r\nimport { Input, InputLabel } from '@material-ui/core'\r\nimport { MenuItem, Select, Typography } from '@material-ui/core'\r\nimport AlertMessage from './shared/Alert'\r\nimport voca from 'voca'\r\nimport { useForm, Controller } from 'react-hook-form'\r\nimport _ from 'lodash'\r\nimport { CustomDialog } from './shared/CustomDialog'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport ShipmentCreationProgress from './CreateShipment/ShipmentCreationProgress'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker\r\n} from '@material-ui/pickers'\r\nimport { setDataMapping } from '../utils/data-mapping'\r\nimport { getCreatedShipment, getUNLOCO, getLocationByUNLOCO } from '../api/api'\r\nimport Accordion from '@material-ui/core/Accordion'\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary'\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport ToggleButton from '@material-ui/lab/ToggleButton'\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport { getOrgViewCodeFromOrganization } from '../utils/organizations'\r\nimport { renderTable } from '../components/shared/TableHelper'\r\nimport { retrieveView } from './shared/Views'\r\nimport { getNextEnabledBookingStep } from './CreateShipment/CreateBookingFunctions'\r\nimport { tryParseFloat, tryParseInt } from '../utils/numbers'\r\nimport { clientUserHasPermission } from '../utils/permissions'\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n },\r\n heading: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n}))\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nexport default function CreateShipmentForm(props) {\r\n const {\r\n register,\r\n handleSubmit,\r\n errors,\r\n formState,\r\n setValue,\r\n getValues,\r\n control,\r\n watch\r\n } = useForm()\r\n const { isDirty } = formState\r\n\r\n const [organization, setOrganization] = useState([])\r\n const [clients, setClients] = useState([])\r\n const [currentClient, setCurrentClient] = useState(null)\r\n const [transportModes, setTransportModes] = useState([])\r\n const [incoTerms, setIncoTerms] = useState([])\r\n const [commodities, setCommodities] = useState([])\r\n const [containerModes, setContainerModes] = useState([])\r\n const [serviceLevels, setServiceLevels] = useState([])\r\n const [pieceUnits, setPieceUnits] = useState([])\r\n const [weightUnits, setWeightUnits] = useState([])\r\n const [volumeUnits, setVolumeUnits] = useState([])\r\n const [addresses, setAddresses] = useState([])\r\n const [filteredAddresses, setFilteredAddresses] = useState([])\r\n const [orgConsigneeAddresses, setOrgConsigneeAddresses] = useState([])\r\n const [filteredOrgConsigneeAddresses, setFilteredOrgConsigneeAddresses] =\r\n useState([])\r\n const [orgConsignorAddresses, setOrgConsignorAddresses] = useState([])\r\n const [filteredOrgConsignorAddresses, setFilteredOrgConsignorAddresses] =\r\n useState([])\r\n const [isConsignor, setIsConsignor] = useState(true)\r\n const [originUnlocoCodes, setOriginUnlocoCodes] = useState([])\r\n const [destinationUnlocoCodes, setDestinationUnlocoCodes] = useState([])\r\n const [filteredContainerModes, setFilteredContainerModes] = useState([])\r\n const [didSetOriginUnlocoCode, setDidSetOriginUnlocoCode] = useState(false)\r\n const [didSetDestinationUnlocoCode, setDidSetDestinationUnlocoCode] =\r\n useState(false)\r\n const [originUNLOCOCodeObject, setOriginUNLOCOCodeObject] = useState(null)\r\n const [destinationUNLOCOCodeObject, setDestinationUNLOCOCodeObject] =\r\n useState(null)\r\n const [modalOpen, setModalOpen] = useState(false)\r\n const [consignorAddressesModalOpen, setConsignorAddressesModalOpen] =\r\n useState(false)\r\n const [consigneeAddressesModalOpen, setConsigneeAddressesModalOpen] =\r\n useState(false)\r\n const [key, setKey] = useState(['shipment.create'])\r\n const [organizationId, setOrganizationId] = useState(null)\r\n const [bookingAlert, setBookingAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [orderAlert, setOrderAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [referredOrderAlert, setReferredOrderAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [colorThemePrimaryRGB, setcolorThemePrimaryRGB] = useState('')\r\n const [colorThemeSecondaryRGB, setcolorThemeSecondaryRGB] = useState('')\r\n const [colorThemeTertiaryRGB, setcolorThemeTertiaryRGB] = useState('')\r\n const [colorThemeRGB, setcolorThemeRGB] = useState('')\r\n const [colorThemeTextRGB, setcolorThemeTextRGB] = useState('')\r\n const [retrievingOrder, setRetrievingOrder] = useState(false)\r\n const [retrievingDataReferred, setretrievingDataReferred] = useState(false)\r\n const [expandedPanels, setExpandedPanels] = useState(['panel1'])\r\n const [bookingOrders, setBookingOrders] = useState([])\r\n const [linkedOrderHeaderColumns, setLinkedOrderHeaderColumns] = useState([])\r\n const [pageTitle, setPageTitle] = useState('Create Booking')\r\n const [shipmentNumber, setShipmentNumber] = useState(null)\r\n const [editCopyBookingNumber, setEditCopyBookingNumber] = useState(null)\r\n const [retrievingCW1Booking, setRetrievingCW1Booking] = useState(false)\r\n const [consolidatedOrderList, setConsolidatedOrderList] = useState([])\r\n const [controllingCustomerCode, setControllingCustomerCode] = useState(null)\r\n const [selectedAddressForeignKey, setselectedAddressForeignKey] =\r\n useState(null)\r\n const watchTransportMode = watch('transportModeCode')\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n const [isReadOnly, setIsReadOnly] = useState(false)\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n useEffect(() => {\r\n getClients()\r\n setLinkedOrderColumnDefinitions()\r\n getOrgViewCode()\r\n }, [])\r\n\r\n useEffect(() => {\r\n let shipmentNumber = sessionStorage.getItem(shipmentIdKey())\r\n const editCopyBookingNumber = localStorage.getItem(\r\n 'editCopyBookingNumber'\r\n )\r\n const editCopyBookingClientId = localStorage.getItem(\r\n 'editCopyBookingClientId'\r\n )\r\n\r\n if (editCopyBookingNumber) {\r\n setRetrievingCW1Booking(true)\r\n }\r\n\r\n if (shipmentNumber || editCopyBookingNumber) {\r\n const client = clients.find(c => c.id === editCopyBookingClientId)\r\n // need to clear shipmentnumber if there is an edit copy booking number\r\n if (editCopyBookingNumber) {\r\n shipmentNumber = null\r\n }\r\n\r\n if (client || shipmentNumber) {\r\n getCreatedShipment(\r\n shipmentNumber,\r\n editCopyBookingClientId,\r\n editCopyBookingNumber,\r\n async data => {\r\n if (editCopyBookingNumber || data.cW1BookingNumber) {\r\n var bookingNumber = editCopyBookingNumber\r\n ? editCopyBookingNumber\r\n : data.cW1BookingNumber\r\n setPageTitle('Edit Booking # ' + bookingNumber)\r\n }\r\n\r\n if (data.originUNLOCOCode !== null) {\r\n getLocationByUNLOCO(\r\n data.originUNLOCOCode,\r\n async data => {\r\n if (data) {\r\n const codeArray = [data]\r\n setOriginUnlocoCodes(codeArray)\r\n if (codeArray.length > 0) {\r\n setOriginUNLOCOCodeObject(\r\n codeArray[0]\r\n )\r\n setValue(\r\n 'originUNLOCOCode',\r\n codeArray[0]\r\n )\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n if (data.destinationUNLOCOCode !== null) {\r\n getLocationByUNLOCO(\r\n data.destinationUNLOCOCode,\r\n async data => {\r\n if (data) {\r\n const codeArray = [data]\r\n setDestinationUnlocoCodes(codeArray)\r\n if (codeArray.length > 0) {\r\n setDestinationUNLOCOCodeObject(\r\n codeArray[0]\r\n )\r\n setValue(\r\n 'destinationUNLOCOCode',\r\n codeArray[0]\r\n )\r\n }\r\n }\r\n }\r\n )\r\n }\r\n\r\n setOrganizationId(data.organizationId)\r\n setValue('clientId', data.clientId)\r\n setCurrentClient(\r\n clients.find(c => c.id === data.clientId)\r\n )\r\n setValue(\r\n 'orderReferenceNumber',\r\n data.orderReferenceNumber\r\n )\r\n setValue(\r\n 'clientReferenceNumber',\r\n data.clientReferenceNumber\r\n )\r\n setValue('transportModeCode', data.transportModeCode)\r\n setValue('incoTermsCode', data.incoTermsCode)\r\n setValue('commodityCode', data.commodityCode)\r\n setValue('containerTypeCode', data.containerTypeCode)\r\n setValue('serviceLevelCode', data.serviceLevelCode)\r\n setValue('goodsDescription', data.goodsDescription)\r\n setValue('piecesCount', data.piecesCount)\r\n setValue('piecesUOM', data.piecesUOM)\r\n setValue('weight', data.weight)\r\n setValue('weightUOM', data.weightUOM)\r\n setValue('volume', data.volume)\r\n setValue('volumeUOM', data.volumeUOM)\r\n setValue(\r\n 'requiredETD',\r\n data.requiredETD === '0001-01-01T00:00:00'\r\n ? null\r\n : data.requiredETD\r\n )\r\n setValue(\r\n 'requiredETA',\r\n data.requiredETA === '0001-01-01T00:00:00'\r\n ? null\r\n : data.requiredETA\r\n )\r\n setValue(\r\n 'requestedDelivery',\r\n data.requestedDelivery === '0001-01-01T00:00:00'\r\n ? null\r\n : data.requestedDelivery\r\n )\r\n setValue(\r\n 'requiredPickup',\r\n data.requiredPickup === '0001-01-01T00:00:00'\r\n ? null\r\n : data.requiredPickup\r\n )\r\n setValue(\r\n 'cargoReadyDate',\r\n data.cargoReadyDate === '0001-01-01T00:00:00'\r\n ? null\r\n : data.cargoReadyDate\r\n )\r\n setConsolidatedOrderList(data.linkedOrders)\r\n setBookingOrders(data.linkedOrderHeaders)\r\n\r\n if (data.shipmentNumber !== null) {\r\n setShipmentNumber(data.shipmentNumber)\r\n }\r\n\r\n if (data.cW1BookingNumber !== null) {\r\n setEditCopyBookingNumber(data.cW1BookingNumber)\r\n }\r\n\r\n const consignors = data.contacts.filter(\r\n c => c.addressType === 'PIC'\r\n )\r\n if (consignors.length > 0) {\r\n setValue('consignor', consignors[0])\r\n }\r\n\r\n const consignees = data.contacts.filter(\r\n c => c.addressType === 'DLV'\r\n )\r\n if (consignees.length > 0) {\r\n setValue('consignee', consignees[0])\r\n }\r\n }\r\n )\r\n .then(() => {\r\n setRetrievingCW1Booking(false)\r\n setReferredOrderAlert({\r\n open: true,\r\n success: true,\r\n message:\r\n (editCopyBookingNumber\r\n ? 'Booking details'\r\n : 'Booking draft') + ' successfully loaded!'\r\n })\r\n })\r\n .catch(error => {\r\n setRetrievingCW1Booking(false)\r\n setReferredOrderAlert({\r\n open: true,\r\n success: false,\r\n message: 'Failed to load booking details.'\r\n })\r\n })\r\n\r\n if (editCopyBookingNumber) {\r\n localStorage.removeItem('editCopyBookingNumber')\r\n localStorage.removeItem('editCopyBookingClientId')\r\n }\r\n }\r\n } else {\r\n setDidSetDestinationUnlocoCode(true)\r\n setDidSetOriginUnlocoCode(true)\r\n }\r\n\r\n getTypesData()\r\n\r\n if (!getValues('orderNumberSplit')) {\r\n setValue('orderNumberSplit', '0')\r\n }\r\n }, [clients])\r\n\r\n useEffect(() => {\r\n setValue('containerTypeMode', null)\r\n if (getValues('transportModeCode') === 'AIR') {\r\n setFilteredContainerModes(\r\n containerModes.filter(mode => mode.propertyKey === 'LSE')\r\n )\r\n } else if (getValues('transportModeCode') === 'SEA') {\r\n setFilteredContainerModes(\r\n containerModes.filter(\r\n mode =>\r\n mode.propertyKey === 'FCL' || mode.propertyKey === 'LCL'\r\n )\r\n )\r\n } else if (getValues('transportModeCode') === 'RAI') {\r\n setFilteredContainerModes(\r\n containerModes.filter(mode => mode.propertyKey === 'FCL')\r\n )\r\n } else if (getValues('transportModeCode') === 'ROA') {\r\n setFilteredContainerModes(\r\n containerModes.filter(\r\n mode =>\r\n mode.propertyKey === 'FCL' ||\r\n mode.propertyKey === 'LCL' ||\r\n mode.propertyKey === 'LTL' ||\r\n mode.propertyKey === 'FTL'\r\n )\r\n )\r\n } else {\r\n setFilteredContainerModes(containerModes)\r\n }\r\n }, [watchTransportMode, transportModes])\r\n\r\n useEffect(() => {\r\n if (originUnlocoCodes.length > 0 && !didSetOriginUnlocoCode) {\r\n setOriginUNLOCOCodeObject(originUnlocoCodes[0])\r\n setDidSetOriginUnlocoCode(true)\r\n }\r\n }, [originUnlocoCodes])\r\n\r\n useEffect(() => {\r\n if (destinationUnlocoCodes.length > 0 && !didSetDestinationUnlocoCode) {\r\n setDestinationUNLOCOCodeObject(destinationUnlocoCodes[0])\r\n setDidSetDestinationUnlocoCode(true)\r\n }\r\n }, [destinationUnlocoCodes])\r\n\r\n useEffect(() => {\r\n setretrievingDataReferred(true)\r\n // get order number from local storage\r\n const orderNumber = localStorage.getItem('newBookingOrderNumber')\r\n const orderNumberSplit = localStorage.getItem(\r\n 'newBookingOrderNumberSplit'\r\n )\r\n const buyerCode = localStorage.getItem('newBookingBuyerCode')\r\n const clientCompanyCode = localStorage.getItem('newBookingClientCode')\r\n const consolidatedOrderData = JSON.parse(\r\n localStorage.getItem('consolidatedOrderData')\r\n )\r\n const bookingOrders = JSON.parse(\r\n localStorage.getItem('bookingOrdersData')\r\n )\r\n\r\n if (!orderNumber || !orderNumberSplit || !clientCompanyCode) {\r\n clearReferredOrderValues()\r\n setretrievingDataReferred(false)\r\n return\r\n }\r\n\r\n const client = clients.find(\r\n c => c.integrationCompanyCode === clientCompanyCode\r\n )\r\n\r\n if (client) {\r\n setretrievingDataReferred(true)\r\n\r\n fetchAllOrderData(orderNumber, orderNumberSplit, client.id)\r\n .then(fetchedOrderData => {\r\n if (!fetchedOrderData.orderNumber) {\r\n // handle this\r\n clearReferredOrderValues()\r\n setretrievingDataReferred(false)\r\n return\r\n }\r\n\r\n let orderClientIsConsignor = false\r\n if (\r\n fetchedOrderData.buyerCode ===\r\n client.integrationCompanyCode\r\n ) {\r\n setIsConsignor(false)\r\n } else if (\r\n fetchedOrderData.supplierCode ===\r\n client.integrationCompanyCode\r\n ) {\r\n orderClientIsConsignor = true\r\n setIsConsignor(true)\r\n } else {\r\n // handle this\r\n alert('Order client is not consignor or consignee.')\r\n clearReferredOrderValues()\r\n setretrievingDataReferred(false)\r\n return\r\n }\r\n\r\n setretrievingDataReferred(false)\r\n setClientAddresses(client, orderClientIsConsignor)\r\n // clear consignee address\r\n setAddresses([])\r\n setFilteredAddresses([])\r\n searchAddresses('', orderClientIsConsignor, true).then(\r\n searchedAddresses => {\r\n if (searchedAddresses.length > 0) {\r\n if (orderClientIsConsignor) {\r\n // set the consignee address\r\n const consigneeAddress =\r\n searchedAddresses.find(\r\n a =>\r\n a.orgCode ===\r\n fetchedOrderData.buyerCode\r\n )\r\n if (consigneeAddress) {\r\n setValue('consignee', consigneeAddress)\r\n setValue(\r\n 'consignee.clientBuyerSupplierCode',\r\n consigneeAddress.orgCode\r\n )\r\n setselectedAddressForeignKey(\r\n consigneeAddress.psaClientBuyerSupplierFK\r\n )\r\n }\r\n } else {\r\n const consignorAddress =\r\n searchedAddresses.find(\r\n a =>\r\n a.orgCode ===\r\n fetchedOrderData.supplierCode\r\n )\r\n // set the consignor address\r\n if (consignorAddress) {\r\n setValue('consignor', consignorAddress)\r\n setValue(\r\n 'consignor.clientBuyerSupplierCode',\r\n consignorAddress.orgCode\r\n )\r\n setselectedAddressForeignKey(\r\n consignorAddress.psaClientBuyerSupplierFK\r\n )\r\n }\r\n }\r\n }\r\n }\r\n )\r\n\r\n // set extra values\r\n setValue('clientId', client.id)\r\n setCurrentClient(clients.find(c => c.id === client.id))\r\n\r\n if (consolidatedOrderData) {\r\n setValue(\r\n 'orderReferenceNumber',\r\n consolidatedOrderData.orderNumber\r\n )\r\n fetchedOrderData.orderNumber =\r\n consolidatedOrderData.orderNumber\r\n fetchedOrderData.orderTransportMode =\r\n consolidatedOrderData.orderTransportMode\r\n fetchedOrderData.containerMode =\r\n consolidatedOrderData.containerMode\r\n fetchedOrderData.incoTerms =\r\n consolidatedOrderData.incoTerms\r\n fetchedOrderData.serviceLevel =\r\n consolidatedOrderData.serviceLevel\r\n fetchedOrderData.goodsDescription =\r\n consolidatedOrderData.goodsDescription\r\n fetchedOrderData.packs = consolidatedOrderData.packs\r\n fetchedOrderData.packType =\r\n consolidatedOrderData.packType\r\n fetchedOrderData.weight = consolidatedOrderData.weight\r\n fetchedOrderData.weightUOM =\r\n consolidatedOrderData.weightUOM\r\n fetchedOrderData.volume = consolidatedOrderData.volume\r\n fetchedOrderData.volumeUOM =\r\n consolidatedOrderData.volumeUOM\r\n fetchedOrderData.origin = consolidatedOrderData.origin\r\n fetchedOrderData.destination =\r\n consolidatedOrderData.destination\r\n fetchedOrderData.dateDepartEst =\r\n consolidatedOrderData.dateDepartEst\r\n fetchedOrderData.dateArriveEst =\r\n consolidatedOrderData.dateArriveEst\r\n fetchedOrderData.dateDeliveredEst =\r\n consolidatedOrderData.dateDeliveredEst\r\n setConsolidatedOrderList(\r\n consolidatedOrderData.orderNumbersArray\r\n )\r\n setBookingOrders(bookingOrders)\r\n } else {\r\n setValue('orderReferenceNumber', orderNumber)\r\n setConsolidatedOrderList([\r\n {\r\n orderNumber: orderNumber,\r\n orderNumberSplit: parseInt(orderNumberSplit),\r\n buyerCode: buyerCode\r\n }\r\n ])\r\n }\r\n\r\n setBookingDetailsFromOrder(fetchedOrderData)\r\n clearReferredOrderValues()\r\n setReferredOrderAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order details successfully loaded!'\r\n })\r\n })\r\n .catch(error => {\r\n clearReferredOrderValues()\r\n setretrievingDataReferred(false)\r\n setReferredOrderAlert({\r\n open: true,\r\n success: false,\r\n message: 'Failed to load order details.'\r\n })\r\n })\r\n }\r\n }, [clients])\r\n\r\n useEffect(() => {\r\n const checkLockOrderPermission = async () => {\r\n if (currentClient) {\r\n try {\r\n const hasLockOrdertoBookingFieldsPermission = await clientUserHasPermission(\r\n currentClient.id, \r\n 'lockordertobookingfields'\r\n ) \r\n // Check if the form was opened via an order \r\n const wasOpenedViaOrder = consolidatedOrderList.length > 0\r\n setIsReadOnly(hasLockOrdertoBookingFieldsPermission && wasOpenedViaOrder) // Set isReadOnly when both permission is true and form was opened via an order\r\n } catch {\r\n setIsReadOnly(false)\r\n }\r\n } else {\r\n setIsReadOnly(false)\r\n }\r\n }\r\n\r\n checkLockOrderPermission()\r\n }, [currentClient, consolidatedOrderList])\r\n\r\n useEffect((fetchedOrderData) => {\r\n const handleBeforeUnload = (e) => {\r\n if ((isDirty || fetchedOrderData !== null) && !isSubmitting) {\r\n e.preventDefault();\r\n e.returnValue = 'Are you sure you want to leave the page? Changes won\\'t be saved.';\r\n return e.returnValue;\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', handleBeforeUnload);\r\n\r\n return () => {\r\n window.removeEventListener('beforeunload', handleBeforeUnload);\r\n };\r\n }, [isDirty, isSubmitting]);\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n const clearReferredOrderValues = () => {\r\n localStorage.removeItem('newBookingOrderNumber')\r\n localStorage.removeItem('newBookingOrderNumberSplit')\r\n localStorage.removeItem('newBookingBuyerCode')\r\n localStorage.removeItem('newBookingClientCode')\r\n localStorage.removeItem('consolidatedOrderData')\r\n localStorage.removeItem('bookingOrdersData')\r\n }\r\n\r\n const fieldPanelMapping = [\r\n {\r\n field: 'clientId',\r\n panel: 'panel1'\r\n },\r\n {\r\n field: 'clientReferenceNumber',\r\n panel: 'panel3'\r\n },\r\n {\r\n field: 'transportModeCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'incoTermsCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'commodityCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'containerTypeCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'serviceLevelCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'goodsDescription',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'piecesCount',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'piecesUOM',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'weight',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'weightUOM',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'volume',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'volumeUOM',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'consignor',\r\n panel: 'panel4'\r\n },\r\n {\r\n field: 'consignee',\r\n panel: 'panel5'\r\n },\r\n {\r\n field: 'cargoReadyDate',\r\n panel: 'panel7'\r\n },\r\n {\r\n field: 'originUNLOCOCode',\r\n panel: 'panel6'\r\n },\r\n {\r\n field: 'destinationUNLOCOCode',\r\n panel: 'panel6'\r\n }\r\n ]\r\n\r\n const contactsAreEqual = () => {\r\n const consignor = getValues('consignor')\r\n const consignee = getValues('consignee')\r\n if (consignor !== undefined && consignee !== undefined) {\r\n if (\r\n consignor.addressLine1 === consignee.addressLine1 &&\r\n consignor.city === consignee.city &&\r\n consignor.zipCode === consignee.zipCode &&\r\n consignor.state === consignee.state &&\r\n consignor.countryCode === consignee.countryCode\r\n ) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n const shipmentIdKey = () => {\r\n return key + '.shipmentId'\r\n }\r\n\r\n const handleSetIsConsignor = (event, newValue) => {\r\n const clientId = getValues('clientId')\r\n if (clientId) {\r\n const client = clients.find(c => c.id === clientId)\r\n if (client) {\r\n setClientAddresses(client, newValue)\r\n }\r\n }\r\n setIsConsignor(newValue)\r\n searchAddresses('', newValue, true).then(searchedAddresses => {\r\n // something\r\n })\r\n }\r\n\r\n const setDataTypes = data => {\r\n const values1 = data.filter(\r\n item => item.propertyType === 'TRANSPORT_MODE'\r\n )\r\n if (values1.length > 0) {\r\n setTransportModes(values1.filter(item => item.isAvailable === true))\r\n const defaultTransportMode = values1.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultTransportMode.length > 0) {\r\n setValue(\r\n 'transportModeCode',\r\n defaultTransportMode[0].propertyKey\r\n )\r\n }\r\n }\r\n\r\n const values2 = data.filter(item => item.propertyType === 'INCO_TERMS')\r\n if (values2.length > 0) {\r\n setIncoTerms(values2.filter(item => item.isAvailable === true))\r\n const defaultIncoTerms = values2.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultIncoTerms.length > 0) {\r\n setValue('incoTermsCode', defaultIncoTerms[0].propertyKey)\r\n }\r\n }\r\n\r\n const values3 = data.filter(item => item.propertyType === 'COMMODITY')\r\n if (values3.length > 0) {\r\n setCommodities(values3.filter(item => item.isAvailable === true))\r\n const defaultCommodity = values3.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultCommodity.length > 0) {\r\n setValue('commodityCode', defaultCommodity[0].propertyKey)\r\n }\r\n }\r\n\r\n const values4 = data.filter(\r\n item => item.propertyType === 'CONTAINER_TYPE_MODE'\r\n )\r\n if (values4.length > 0) {\r\n setContainerModes(values4.filter(item => item.isAvailable === true))\r\n const defaultContainerMode = values4.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultContainerMode.length > 0) {\r\n setValue(\r\n 'containerTypeCode',\r\n defaultContainerMode[0].propertyKey\r\n )\r\n }\r\n }\r\n\r\n const values5 = data.filter(\r\n item => item.propertyType === 'SERVICE_LEVEL'\r\n )\r\n if (values5.length > 0) {\r\n setServiceLevels(values5.filter(item => item.isAvailable === true))\r\n const defaultServiceLevel = values5.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultServiceLevel.length > 0) {\r\n setValue('serviceLevelCode', defaultServiceLevel[0].propertyKey)\r\n }\r\n }\r\n\r\n const values6 = data.filter(item => item.propertyType === 'PIECES_UOM')\r\n if (values6.length > 0) {\r\n setPieceUnits(values6.filter(item => item.isAvailable === true))\r\n const defaultPiecesUOM = values6.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultPiecesUOM.length > 0) {\r\n setValue('piecesUOM', defaultPiecesUOM[0].propertyKey)\r\n }\r\n }\r\n\r\n const values7 = data.filter(item => item.propertyType === 'WEIGHT_UOM')\r\n if (values7.length > 0) {\r\n setWeightUnits(values7.filter(item => item.isAvailable === true))\r\n const defaultWeightUOM = values7.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultWeightUOM.length > 0) {\r\n setValue('weightUOM', defaultWeightUOM[0].propertyKey)\r\n }\r\n }\r\n\r\n const values8 = data.filter(item => item.propertyType === 'VOLUME_UOM')\r\n if (values8.length > 0) {\r\n setVolumeUnits(values8.filter(item => item.isAvailable === true))\r\n const defaultVolumeUOM = values8.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultVolumeUOM.length > 0) {\r\n setValue('volumeUOM', defaultVolumeUOM[0].propertyKey)\r\n }\r\n }\r\n }\r\n\r\n const prepareData = data => {\r\n const newData = _.clone(_.omitBy(data, _.isNil))\r\n newData['originUNLOCOCode'] = originUNLOCOCodeObject?.unloco\r\n newData['destinationUNLOCOCode'] = destinationUNLOCOCodeObject?.unloco\r\n newData['piecesCount'] = parseInt(data.piecesCount)\r\n newData['weight'] = parseFloat(data.weight)\r\n newData['volume'] = parseFloat(data.volume)\r\n newData['organizationId'] = organizationId\r\n newData['controllingCustomerCode'] = controllingCustomerCode\r\n\r\n const newConsignor = _.clone(data.consignor)\r\n newConsignor['addressType'] = 'PIC'\r\n\r\n const newConsignee = _.clone(data.consignee)\r\n newConsignee['addressType'] = 'DLV'\r\n\r\n newData['contacts'] = [newConsignor, newConsignee]\r\n newData['linkedOrders'] = consolidatedOrderList\r\n return newData\r\n }\r\n\r\n const handleFormSubmit = data => {\r\n setIsSubmitting(true);\r\n if (contactsAreEqual()) {\r\n setBookingAlert({\r\n open: true,\r\n success: false,\r\n message: 'Consignor and consignee addresses are the same.'\r\n });\r\n setIsSubmitting(false);\r\n } else {\r\n const preparedData = prepareData(data)\r\n saveShipmentData(preparedData)\r\n }\r\n }\r\n\r\n const handleInvalidFormSubmit = errors => {\r\n let panels = []\r\n for (const error in errors) {\r\n // get the panel name for the field\r\n const panel = fieldPanelMapping.find(f => f.field === error)?.panel\r\n if (panel && !panels.includes(panel)) {\r\n panels.push(panel)\r\n }\r\n }\r\n setExpandedPanels(panels)\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setBookingAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleCloseOrderAlert = () => {\r\n setOrderAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleCloseReferredOrderAlert = () => {\r\n setReferredOrderAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const updateAddressInfo = data => {\r\n if (data === null) {\r\n return\r\n }\r\n\r\n const key = !isConsignor ? 'consignor' : 'consignee'\r\n\r\n setValue(`${key}.name`, data.name)\r\n setValue(`${key}.portCode`, data.portCode)\r\n setValue(`${key}.addressLine1`, data.addressLine1)\r\n setValue(`${key}.city`, data.city)\r\n setValue(`${key}.state`, data.state)\r\n setValue(`${key}.countryCode`, data.countryCode)\r\n setValue(`${key}.zipCode`, data.zipCode)\r\n setValue(`${key}.clientBuyerSupplierCode`, data.orgCode)\r\n setselectedAddressForeignKey(data.psaClientBuyerSupplierFK)\r\n setControllingCustomerCode(data.controllingCustomerCode)\r\n }\r\n\r\n const updateAddressInfoFromSelection = (data, sourceParty) => {\r\n if (data === null) {\r\n return\r\n }\r\n\r\n setValue(`${sourceParty}.name`, data.name)\r\n setValue(`${sourceParty}.portCode`, data.portCode)\r\n setValue(`${sourceParty}.addressLine1`, data.addressLine1)\r\n setValue(`${sourceParty}.city`, data.city)\r\n setValue(`${sourceParty}.state`, data.state)\r\n setValue(`${sourceParty}.countryCode`, data.countryCode)\r\n setValue(`${sourceParty}.zipCode`, data.zipCode)\r\n setValue(`${sourceParty}.clientBuyerSupplierCode`, data.orgCode)\r\n }\r\n\r\n const renderBookingAlert = () => {\r\n return bookingAlert.open ? (\r\n
\r\n handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n const renderReferredOrderAlert = () => {\r\n return referredOrderAlert.open ? (\r\n handleCloseReferredOrderAlert()}\r\n severity={referredOrderAlert.success ? 'success' : 'error'}\r\n >\r\n {referredOrderAlert.message}\r\n \r\n ) : null\r\n }\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setcolorThemePrimaryRGB(data.colorThemePrimaryRGB)\r\n setcolorThemeSecondaryRGB(data.colorThemeSecondaryRGB)\r\n setcolorThemeTertiaryRGB(data.colorThemeTertiaryRGB)\r\n setcolorThemeRGB(data.colorThemeRGB)\r\n setcolorThemeTextRGB(data.colorThemeTextRGB)\r\n setOrganization(data)\r\n }\r\n }\r\n const renderInput = (\r\n label,\r\n name,\r\n required = true,\r\n inputProps = {},\r\n customKey = null,\r\n customSubKey = null\r\n ) => {\r\n return (\r\n \r\n \r\n \r\n {\r\n if (required && !value)\r\n return 'This field is required.'\r\n if (name === 'piecesCount')\r\n return tryParseInt(value, null) ===\r\n null ||\r\n tryParseInt(value, null) < 1 ||\r\n tryParseFloat(value, null) % 1 !== 0\r\n ? 'Value must be a positive whole number'\r\n : true\r\n if (name === 'weight' || name === 'volume')\r\n return tryParseFloat(value, null) ===\r\n null ||\r\n tryParseFloat(value, null) < 0.1\r\n ? 'Value must be more than 0.1'\r\n : true\r\n if (name === 'clientReferenceNumber')\r\n return value.length > 20\r\n ? 'This field must be 20 or less characters'\r\n : true\r\n return true\r\n }\r\n }}\r\n name={name}\r\n control={control}\r\n defaultValue={''}\r\n render={({ onChange, onBlur, value, name }) => (\r\n \r\n )}\r\n />\r\n\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n {customKey !== undefined &&\r\n customSubKey !== undefined &&\r\n customKey !== null &&\r\n customSubKey !== null &&\r\n errors[customKey] &&\r\n errors[customKey][customSubKey] && (\r\n

\r\n {errors[customKey][customSubKey].message}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n const getCargoReadyDate = currentorg => {\r\n if (orgViewCode === 901) {\r\n return (\r\n \r\n {renderDatePicker(\r\n 'cargoReadyDate',\r\n 'Cargo Ready Date',\r\n currentorg,\r\n true\r\n )}\r\n \r\n )\r\n }\r\n return null\r\n }\r\n\r\n const renderDateSelectors = currentorg => {\r\n switch (orgViewCode) {\r\n case 931:\r\n return renderDateSelectors931(currentorg)\r\n default:\r\n return renderDateSelectorsDefault(currentorg)\r\n }\r\n }\r\n\r\n const renderDateSelectorsDefault = currentorg => {\r\n return (\r\n \r\n \r\n {renderDatePicker(\r\n 'requiredPickup',\r\n 'Required Pickup',\r\n currentorg\r\n )}\r\n \r\n \r\n {renderDatePicker(\r\n 'requiredETD',\r\n 'Required ETD',\r\n currentorg\r\n )}\r\n \r\n \r\n {renderDatePicker(\r\n 'requiredETA',\r\n 'Required ETA',\r\n currentorg\r\n )}\r\n \r\n \r\n {renderDatePicker(\r\n 'requestedDelivery',\r\n 'Requested Delivery',\r\n currentorg\r\n )}\r\n \r\n {getCargoReadyDate(currentorg)}\r\n \r\n )\r\n }\r\n\r\n const renderDateSelectors931 = currentorg => {\r\n return (\r\n \r\n \r\n {renderDatePicker(\r\n 'requiredPickup',\r\n 'Cargo Ready Date',\r\n currentorg\r\n )}\r\n \r\n \r\n )\r\n }\r\n\r\n const setClientAddresses = (client, isConsignor) => {\r\n const setKey = isConsignor ? 'consignor' : 'consignee'\r\n const clearKey = isConsignor ? 'consignee' : 'consignor'\r\n\r\n setValue(`${setKey}.name`, client.name)\r\n setValue(`${setKey}.addressLine1`, client.contactAddressLine1)\r\n setValue(`${setKey}.city`, client.contactAddressCity)\r\n setValue(`${setKey}.state`, client.contactAddressRegion)\r\n setValue(`${setKey}.countryCode`, client.contactAddressCountryCode)\r\n setValue(`${setKey}.zipCode`, client.contactAddressZipCode)\r\n setValue(\r\n `${setKey}.clientBuyerSupplierCode`,\r\n client.integrationCompanyCode\r\n )\r\n\r\n setValue(`${clearKey}.name`, '')\r\n setValue(`${clearKey}.addressLine1`, '')\r\n setValue(`${clearKey}.city`, '')\r\n setValue(`${clearKey}.state`, '')\r\n setValue(`${clearKey}.countryCode`, '')\r\n setValue(`${clearKey}.zipCode`, '')\r\n setValue(`${clearKey}.clientBuyerSupplierCode`, '')\r\n }\r\n\r\n const setBookingDetailsFromOrder = async order => {\r\n if (order === null) {\r\n return\r\n }\r\n\r\n setValue('orderReferenceNumber', order.orderNumber)\r\n setValue('transportModeCode', order.orderTransportMode)\r\n setValue('containerTypeCode', order.containerMode)\r\n setValue('incoTermsCode', order.incoTerms)\r\n setValue('serviceLevelCode', order.serviceLevel)\r\n setValue('commodityCode', '') // not available in order\r\n setValue('goodsDescription', order.goodsDescription)\r\n\r\n setValue('piecesCount', order.packs)\r\n setValue('piecesUOM', order.packType)\r\n setValue('weight', order.weight)\r\n setValue('weightUOM', order.weightUOM)\r\n setValue('volume', order.volume)\r\n setValue('volumeUOM', order.volumeUOM)\r\n\r\n if (order.origin !== null) {\r\n getLocationByUNLOCO(order.origin, async data => {\r\n const codeArray = [data]\r\n setOriginUnlocoCodes(codeArray)\r\n if (codeArray.length > 0) {\r\n setOriginUNLOCOCodeObject(codeArray[0])\r\n setValue('originUNLOCOCode', codeArray[0])\r\n }\r\n })\r\n }\r\n\r\n if (order.destination !== null) {\r\n getLocationByUNLOCO(order.destination, async data => {\r\n const codeArray = [data]\r\n setDestinationUnlocoCodes(codeArray)\r\n if (codeArray.length > 0) {\r\n setDestinationUNLOCOCodeObject(codeArray[0])\r\n setValue('destinationUNLOCOCode', codeArray[0])\r\n }\r\n })\r\n }\r\n\r\n setValue(\r\n 'requiredETD',\r\n order.dateDepartEst ? order.dateDepartEst : null\r\n )\r\n setValue(\r\n 'requiredETA',\r\n order.dateArriveEst ? order.dateArriveEst : null\r\n )\r\n setValue(\r\n 'requestedDelivery',\r\n order.dateDeliveredEst ? order.dateDeliveredEst : null\r\n )\r\n setValue('requiredPickup', null)\r\n }\r\n\r\n const handleSelectChange = (e, name) => {\r\n if (name === 'clientId') {\r\n const client = clients.find(c => c.id === e.target.value)\r\n setClientAddresses(client, isConsignor)\r\n // clear consignee address\r\n setAddresses([])\r\n setFilteredAddresses([])\r\n setOrgConsigneeAddresses([])\r\n setFilteredOrgConsigneeAddresses([])\r\n setOrgConsignorAddresses([])\r\n setFilteredOrgConsignorAddresses([])\r\n searchAddresses('', isConsignor, true).then(searchedAddresses => {\r\n // something\r\n })\r\n setCurrentClient(client)\r\n }\r\n }\r\n\r\n const renderSelect = (\r\n label,\r\n name,\r\n data,\r\n keyValue = 'key',\r\n valueKey = 'value',\r\n showKeyInValue = false\r\n ) => {\r\n return (\r\n \r\n {label}\r\n (\r\n {\r\n onChange(e)\r\n handleSelectChange(e, name)\r\n }}\r\n value={value ? value : ''}\r\n name={name}\r\n input={}\r\n readOnly={isReadOnly && ['transportModeCode', 'incoTermsCode', 'serviceLevelCode'].includes(name)}\r\n >\r\n {data.map(option => (\r\n \r\n {showKeyInValue\r\n ? `${option[keyValue]} - ${option[valueKey]}`\r\n : option[valueKey]}\r\n \r\n ))}\r\n \r\n )}\r\n />\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const renderAutocomplete = (\r\n data,\r\n passedValue,\r\n label,\r\n name,\r\n selectChangeCallback = () => {},\r\n textChangeCallback = () => {}\r\n ) => {\r\n return (\r\n \r\n {label}\r\n (\r\n {\r\n return option.unLoco === value.unLoco\r\n }}\r\n onChange={(e, value) => {\r\n onChange(value)\r\n selectChangeCallback(e, value)\r\n }}\r\n getOptionLabel={option =>\r\n option\r\n ? option.unloco + ' - ' + option.portName\r\n : ''\r\n }\r\n options={data}\r\n loading={false}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n )}\r\n />\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const renderTitle = (title, width = 12) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const renderUnitSection = (key, selectKey, data) => {\r\n const cKey = voca.capitalize(key)\r\n return (\r\n
\r\n \r\n \r\n
{renderInput(cKey, key)}
\r\n
\r\n \r\n
\r\n {renderSelect(\r\n `${cKey} Unit`,\r\n selectKey,\r\n data,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n const getClients = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=createbooking',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setClients(data)\r\n if (data.length > 0) {\r\n if (!getValues('clientId')) {\r\n setValue('clientId', data[0].id)\r\n setCurrentClient(data[0])\r\n\r\n const setKey = isConsignor ? 'consignor' : 'consignee'\r\n\r\n setValue(`${setKey}.name`, data[0].name)\r\n setValue(\r\n `${setKey}.addressLine1`,\r\n data[0].contactAddressLine1\r\n )\r\n setValue(`${setKey}.city`, data[0].contactAddressCity)\r\n setValue(`${setKey}.state`, data[0].contactAddressRegion)\r\n setValue(\r\n `${setKey}.countryCode`,\r\n data[0].contactAddressCountryCode\r\n )\r\n setValue(`${setKey}.zipCode`, data[0].contactAddressZipCode)\r\n setValue(\r\n `${setKey}.clientBuyerSupplierCode`,\r\n data[0].integrationCompanyCode\r\n )\r\n\r\n setAddresses([])\r\n setFilteredAddresses([])\r\n searchAddresses('', isConsignor, true).then(\r\n searchedAddresses => {\r\n // something\r\n }\r\n )\r\n }\r\n setOrganizationId(data[0].psaOrganizationId)\r\n }\r\n }\r\n }\r\n\r\n const getTypesData = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDataMapping(JSON.stringify(data))\r\n setDataTypes(data)\r\n }\r\n }\r\n\r\n const getLinkedTypesData = async linkId => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetLinkedDataTypes?selectedDataTypeId=' +\r\n linkId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDataTypes(data)\r\n }\r\n }\r\n\r\n const setLinkedOrderColumnDefinitions = async () => {\r\n const clientId = getValues('clientId')\r\n const data = await retrieveView(\r\n clientId,\r\n 'CreateBookingLinkedOrderHeaders'\r\n )\r\n if (!data) {\r\n setLinkedOrderHeaderColumns([])\r\n } else {\r\n const columnDefinitions = data?.columnDefinitionsArray\r\n let parsedColumns = columnDefinitions?.filter(\r\n e => e.visible === true\r\n )\r\n // need to map field and property to label and key\r\n parsedColumns = parsedColumns?.map(e => {\r\n return {\r\n label: e.title,\r\n key: e.value\r\n }\r\n })\r\n setLinkedOrderHeaderColumns(parsedColumns)\r\n }\r\n }\r\n\r\n const searchUNLOCO = async (query, isOrigin = true, isName = true) => {\r\n getUNLOCO(query, isName, async data => {\r\n if (isOrigin) {\r\n setOriginUnlocoCodes(data)\r\n } else {\r\n setDestinationUnlocoCodes(data)\r\n }\r\n })\r\n }\r\n\r\n const searchAddresses = async (\r\n query,\r\n isShipper,\r\n isPrimary,\r\n fromShipper\r\n ) => {\r\n const token = await authService.getAccessToken()\r\n const clientId = getValues('clientId')\r\n\r\n if (!clientId) {\r\n return []\r\n }\r\n\r\n let selectedPartyForeignKey = selectedAddressForeignKey\r\n\r\n if ((isShipper && fromShipper) || (!isShipper && !fromShipper)) {\r\n selectedPartyForeignKey = currentClient?.sourcePK\r\n }\r\n\r\n const response = await fetch(\r\n `api/DataManagement/GetClientOrgAddresses?clientId=${clientId}${\r\n isShipper ? '&IsSearchingShipper=true' : ''\r\n }&SearchQuery=${query}&IsPrimary=${isPrimary}&CW1OrgPK=${\r\n selectedPartyForeignKey ? selectedPartyForeignKey : ''\r\n }`,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (isPrimary) {\r\n setAddresses(data)\r\n setFilteredAddresses(data)\r\n }\r\n return data\r\n } else {\r\n return []\r\n }\r\n }\r\n\r\n const saveShipmentData = async data => {\r\n if (shipmentNumber !== null) {\r\n data['shipmentNumber'] = shipmentNumber\r\n }\r\n if (editCopyBookingNumber !== null) {\r\n data['cW1BookingNumber'] = editCopyBookingNumber\r\n }\r\n\r\n const nextBookingStep = getNextEnabledBookingStep(\r\n 0,\r\n currentClient.bookingSteps,\r\n data.containerTypeCode\r\n )\r\n const token = await authService.getAccessToken()\r\n\r\n await fetch(\r\n 'api/createShipments/PutCreateShipment?sourceForm=bookingDetails',\r\n {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n }\r\n )\r\n .then(async response => {\r\n let results = null\r\n if (response.ok) {\r\n const newData = await response.json()\r\n\r\n sessionStorage.setItem(\r\n shipmentIdKey(),\r\n JSON.stringify(data)\r\n )\r\n\r\n setBookingAlert({\r\n open: true,\r\n success: true,\r\n message: 'Shipment information is saved. Redirecting...'\r\n })\r\n\r\n sessionStorage.setItem(\r\n shipmentIdKey(),\r\n newData.shipmentNumber\r\n )\r\n\r\n setTimeout(() => {\r\n window.location.href = nextBookingStep.href\r\n }, 3000)\r\n } else {\r\n setBookingAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n setBookingAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this Shipment information.'\r\n })\r\n })\r\n }\r\n\r\n const renderDatePicker = (name, label, organization, required) => {\r\n return (\r\n
\r\n \r\n (\r\n {\r\n onChange(e)\r\n setValue(\r\n name,\r\n dateFns.format(e, 'YYYY-MM-DD')\r\n )\r\n }}\r\n />\r\n )}\r\n />\r\n \r\n\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const handleModalOpen = () => {\r\n setFilteredAddresses(addresses)\r\n setModalOpen(true)\r\n }\r\n\r\n const handleConsignorModalOpen = () => {\r\n searchAddresses('', isConsignor, false, true).then(\r\n searchedAddresses => {\r\n if (searchedAddresses.length > 0) {\r\n setOrgConsignorAddresses(searchedAddresses)\r\n setFilteredOrgConsignorAddresses(searchedAddresses)\r\n setConsignorAddressesModalOpen(true)\r\n }\r\n }\r\n )\r\n }\r\n\r\n const handleConsigneeModalOpen = () => {\r\n searchAddresses('', isConsignor, false, false).then(\r\n searchedAddresses => {\r\n if (searchedAddresses.length > 0) {\r\n setOrgConsigneeAddresses(searchedAddresses)\r\n setFilteredOrgConsigneeAddresses(searchedAddresses)\r\n setConsigneeAddressesModalOpen(true)\r\n }\r\n }\r\n )\r\n }\r\n\r\n const handleModalClose = () => {\r\n setModalOpen(false)\r\n setFilteredAddresses(addresses)\r\n }\r\n\r\n const handleConsignorAddressModalClose = () => {\r\n setConsignorAddressesModalOpen(false)\r\n setFilteredOrgConsignorAddresses(orgConsignorAddresses)\r\n }\r\n\r\n const handleConsigneeAddressModalClose = () => {\r\n setConsigneeAddressesModalOpen(false)\r\n setFilteredOrgConsigneeAddresses(orgConsigneeAddresses)\r\n }\r\n\r\n const handleACCChange = panel => event => {\r\n setExpandedPanels([panel])\r\n }\r\n\r\n const fetchAllOrderData = async (\r\n orderNumber,\r\n orderNumberSplit,\r\n clientId\r\n ) => {\r\n const queryString = require('query-string')\r\n\r\n const qs = {\r\n ClientId: clientId,\r\n OrderSearchNumber: btoa(orderNumber).replace('/', '_'),\r\n OrderSearchNumberSplit: orderNumberSplit\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const [orderResponse] = await Promise.all([\r\n fetch('api/orders/GetOrder?' + queryString.stringify(qs), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n ])\r\n\r\n const results = await orderResponse.json()\r\n\r\n return results\r\n }\r\n\r\n return (\r\n
\r\n \r\n {renderReferredOrderAlert()}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'Client'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderSelect(\r\n 'Client',\r\n 'clientId',\r\n clients,\r\n 'id',\r\n 'name'\r\n )}\r\n \r\n \r\n {!isReadOnly && (\r\n \r\n \r\n Consignor\r\n \r\n \r\n Consignee\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'References'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n 'Order Reference',\r\n 'orderReferenceNumber',\r\n false\r\n )}\r\n
\r\n \r\n {renderInput(\r\n 'Client Reference',\r\n 'clientReferenceNumber',\r\n false\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'Consignor'\r\n )}\r\n \r\n \r\n {!isReadOnly && (\r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n !isConsignor ? (\r\n {\r\n handleModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Consignor\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n label=\"\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n 'Consignor Code',\r\n 'consignor.clientBuyerSupplierCode',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'clientBuyerSupplierCode'\r\n )}\r\n
\r\n \r\n {renderInput(\r\n 'Consignor Name',\r\n 'consignor.name',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'name'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Address',\r\n 'consignor.addressLine1',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'addressLine1'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'City',\r\n 'consignor.city',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'city'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'State',\r\n 'consignor.state',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Postal Code',\r\n 'consignor.zipCode',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Country (2 Characters)',\r\n 'consignor.countryCode',\r\n true,\r\n {\r\n maxLength: 2,\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'countryCode'\r\n )}\r\n \r\n \r\n \r\n {!isReadOnly && (\r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n {\r\n setFilteredOrgConsignorAddresses(\r\n orgConsignorAddresses\r\n )\r\n handleConsignorModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Address\r\n \r\n }\r\n label=\"\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Consignee'\r\n )}\r\n \r\n \r\n {!isReadOnly && (\r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n isConsignor ? (\r\n {\r\n handleModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Consignee\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n label=\"\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n 'Consignee Code',\r\n 'consignee.clientBuyerSupplierCode',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'clientBuyerSupplierCode'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Consignee Name',\r\n 'consignee.name',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'name'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Address',\r\n 'consignee.addressLine1',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'addressLine1'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'City',\r\n 'consignee.city',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'city'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'State',\r\n 'consignee.state',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Postal Code',\r\n 'consignee.zipCode',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Country (2 Characters)',\r\n 'consignee.countryCode',\r\n true,\r\n {\r\n maxLength: 2,\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'countryCode'\r\n )}\r\n \r\n \r\n \r\n {!isReadOnly && (\r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n {\r\n setFilteredOrgConsigneeAddresses(\r\n orgConsigneeAddresses\r\n )\r\n handleConsigneeModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Address\r\n \r\n }\r\n label=\"\"\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Details'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderSelect(\r\n 'Transport Mode',\r\n 'transportModeCode',\r\n transportModes,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Container Type Module',\r\n 'containerTypeCode',\r\n containerModes,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Inco Terms',\r\n 'incoTermsCode',\r\n incoTerms,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Service Level',\r\n 'serviceLevelCode',\r\n serviceLevels,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Commodity',\r\n 'commodityCode',\r\n commodities,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Goods Description',\r\n 'goodsDescription'\r\n )}\r\n \r\n \r\n {renderUnitSection(\r\n 'piecesCount',\r\n 'piecesUOM',\r\n pieceUnits\r\n )}\r\n \r\n \r\n {renderUnitSection(\r\n 'weight',\r\n 'weightUOM',\r\n weightUnits\r\n )}\r\n \r\n \r\n {renderUnitSection(\r\n 'volume',\r\n 'volumeUOM',\r\n volumeUnits\r\n )}\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n originUnlocoCodes,\r\n originUNLOCOCodeObject,\r\n 'Origin', \r\n 'originUNLOCOCode',\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setOriginUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n true,\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n destinationUnlocoCodes,\r\n destinationUNLOCOCodeObject,\r\n 'Destination',\r\n 'destinationUNLOCOCode',\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setDestinationUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n false,\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Dates'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {renderDateSelectors(\r\n organization\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'Linked Order Details'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {renderTable(\r\n bookingOrders,\r\n linkedOrderHeaderColumns,\r\n 'linkedOrders',\r\n classes,\r\n null,\r\n {\r\n maxHeight:\r\n '350px'\r\n }\r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {renderBookingAlert()}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Save/Next\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isConsignor ? 'Select Consignee' : 'Select Consignor'}\r\n \r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredAddresses = addresses.filter(address => {\r\n return (\r\n address.orgCode\r\n .toLowerCase()\r\n .includes(value.toLowerCase()) ||\r\n address.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n setFilteredAddresses(filteredAddresses)\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n addresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredAddresses.map((address, i) => (\r\n {\r\n updateAddressInfo(address)\r\n setModalOpen(false)\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n Select Address\r\n \r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredConsigneeAddresses =\r\n orgConsigneeAddresses.filter(address => {\r\n return (\r\n address.orgCode\r\n .toLowerCase()\r\n .includes(value.toLowerCase()) ||\r\n address.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n setFilteredOrgConsigneeAddresses(\r\n filteredConsigneeAddresses\r\n )\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n orgConsigneeAddresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredOrgConsigneeAddresses.map((address, i) => (\r\n {\r\n updateAddressInfoFromSelection(\r\n address,\r\n 'consignee'\r\n )\r\n setConsigneeAddressesModalOpen(false)\r\n }}\r\n // set bold if isprimary = true\r\n style={{\r\n fontWeight: address.isPrimary\r\n ? 'bold'\r\n : 'normal'\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n Select Address\r\n \r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredConsignorAddresses =\r\n orgConsignorAddresses.filter(address => {\r\n return (\r\n address.orgCode\r\n .toLowerCase()\r\n .includes(value.toLowerCase()) ||\r\n address.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n setFilteredOrgConsignorAddresses(\r\n filteredConsignorAddresses\r\n )\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n orgConsignorAddresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredOrgConsignorAddresses.map((address, i) => (\r\n {\r\n updateAddressInfoFromSelection(\r\n address,\r\n 'consignor'\r\n )\r\n setConsignorAddressesModalOpen(false)\r\n }}\r\n // set bold if isprimary = true\r\n style={{\r\n fontWeight: address.isPrimary\r\n ? 'bold'\r\n : 'normal'\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport CreateShipmentForm from './CreateShipmentForm'\r\nimport { canCreateShipment } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function CreateOrder() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setLoadingShow] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setLoadingShow(true)\r\n const data = await response.json()\r\n setShow(await canCreateShipment(data))\r\n setLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Create Shipment' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Grid, CardContent, Select, FormControl } from '@material-ui/core'\r\nimport { Table, TableContainer, TableBody } from '@material-ui/core'\r\nimport { TableRow, TableCell, TableHead, InputLabel } from '@material-ui/core'\r\nimport {\r\n TextField,\r\n IconButton,\r\n Button,\r\n Input,\r\n MenuItem\r\n} from '@material-ui/core'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport AlertMessage from '../shared/Alert'\r\nimport _ from 'lodash'\r\nimport { getDataMapping, setDataMapping } from '../../utils/data-mapping'\r\nimport { getCreatedShipment } from '../../api/api'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport MaterialTable from 'material-table'\r\nimport { retrieveView } from '../shared/Views'\r\n\r\n/*const CreateShipment = {\r\n pathname: `${ApplicationPaths.CreateShipment}`\r\n}*/\r\n\r\nconst classes = makeStyles(theme => ({\r\n table: {\r\n minWidth: 650\r\n }\r\n}))\r\n\r\nconst emptyRow = {\r\n foo: ''\r\n}\r\n\r\nexport default function CreateShipmentTable(props) {\r\n const [shipment, setShipment] = useState([])\r\n const [key, setKey] = useState(['shipment.create'])\r\n const [commodities, setCommodities] = useState([])\r\n const [weightUnits, setWeightUnits] = useState([])\r\n const [lengthUnits, setLengthUnits] = useState([])\r\n const [pieceUnits, setPieceUnits] = useState([])\r\n const [noteUnits, setNoteUnits] = useState([])\r\n const [containerModes, setContainerModes] = useState([])\r\n const [orderLineColumnHeaders, setOrderLineColumnHeaders] = useState([])\r\n const [volumeUnits, setVolumeUnits] = useState([])\r\n\r\n const state = {\r\n commodities,\r\n weightUnits,\r\n volumeUnits,\r\n lengthUnits,\r\n noteUnits,\r\n containerModes,\r\n pieceUnits\r\n }\r\n\r\n const [rows, setRows] = useState([])\r\n const [alert, setAlert] = useState([\r\n {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n ])\r\n\r\n useEffect(() => {\r\n const shipmentNumber = sessionStorage.getItem(shipmentIdKey())\r\n\r\n if (shipmentNumber !== null && shipmentNumber !== undefined) {\r\n getTypesData(shipmentNumber)\r\n getCreatedShipment(shipmentNumber, null, null, data => {\r\n setShipment(data)\r\n // if notes then we need to add new line characters where '##newline##' is found\r\n if (props.shipmentKey === 'notes') {\r\n const notes = data[props.shipmentKey].map(note => {\r\n return {\r\n noteTypeCode: note.noteTypeCode,\r\n noteText: note.noteText.replace(\r\n /##newline##/g,\r\n '\\n'\r\n )\r\n }\r\n })\r\n setRows(notes)\r\n } else {\r\n setRows(data[props.shipmentKey])\r\n }\r\n })\r\n } else {\r\n window.location.replace('/shipments/create')\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n setLinkedOrderLineColumnDefinitions()\r\n }, [])\r\n\r\n const setLinkedOrderLineColumnDefinitions = async () => {\r\n const data = await retrieveView(null, 'CreateBookingLinkedOrderLines')\r\n if (!data) {\r\n setOrderLineColumnHeaders([])\r\n } else {\r\n const columnDefinitions = data?.columnDefinitionsArray\r\n let parsedColumns = columnDefinitions?.filter(\r\n e => e.visible === true\r\n )\r\n // need to map field and property to label and key\r\n parsedColumns = parsedColumns?.map(e => {\r\n return {\r\n title: e.title,\r\n field: e.value\r\n }\r\n })\r\n setOrderLineColumnHeaders(parsedColumns)\r\n }\r\n }\r\n\r\n const updateShipmentField = values => {\r\n setShipment({ ...shipment, ...values })\r\n }\r\n\r\n const shipmentIdKey = () => {\r\n return key + '.shipmentId'\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleChange = (e, idx, name) => {\r\n const { value } = e.target\r\n updateValueInRow(idx, name, value)\r\n }\r\n\r\n const updateValueInRow = (idx, key, value) => {\r\n setRows(\r\n rows.map((item, index) =>\r\n index === idx ? { ...item, [key]: value } : item\r\n )\r\n )\r\n }\r\n\r\n const handleAddRow = () => {\r\n if (rows.length === noteUnits.length) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message: 'You have reached the maximum number of notes.'\r\n })\r\n } else {\r\n setRows([...rows, emptyRow])\r\n }\r\n }\r\n\r\n const setDataTypes = data => {\r\n const values1 = data.filter(item => item.propertyType === 'COMMODITY')\r\n if (values1.length > 0) {\r\n setCommodities(values1.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values2 = data.filter(item => item.propertyType === 'WEIGHT_UOM')\r\n if (values2.length > 0) {\r\n setWeightUnits(values2.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values3 = data.filter(item => item.propertyType === 'LENGTH_UOM')\r\n if (values3.length > 0) {\r\n setLengthUnits(values3.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values4 = data.filter(\r\n item => item.propertyType === 'CONTAINER_MODE'\r\n )\r\n if (values4.length > 0) {\r\n setContainerModes(values4.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values5 = data.filter(item => item.propertyType === 'NOTE_TYPE')\r\n if (values5.length > 0) {\r\n setNoteUnits(values5.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values6 = data.filter(item => item.propertyType === 'PIECES_UOM')\r\n if (values6.length > 0) {\r\n setPieceUnits(values6.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values7 = data.filter(item => item.propertyType === 'VOLUME_UOM')\r\n if (values7.length > 0) {\r\n setVolumeUnits(values7.filter(item => item.isAvailable === true))\r\n }\r\n }\r\n\r\n const handleRemoveSpecificRow = rowIndex => () => {\r\n // remove specified row from rows array\r\n const updatedRows = [...rows]\r\n updatedRows.splice(rowIndex, 1)\r\n setRows(updatedRows)\r\n }\r\n\r\n const renderInputCell = (index, key) => {\r\n return (\r\n \r\n {key === 'noteText' ? (\r\n
\r\n                         handleChange(e, index, key)}\r\n                            className=\"form-control\"\r\n                            rows={2}\r\n                        />\r\n                    
\r\n ) : (\r\n handleChange(e, index, key)}\r\n className=\"form-control\"\r\n />\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const renderSelectCell = (\r\n idx,\r\n key,\r\n label,\r\n data,\r\n unique = false,\r\n keyValue = 'propertyKey',\r\n valueKey = 'value'\r\n ) => {\r\n // if unique is true, then we need to filter out the rows that have already been selected\r\n if (unique) {\r\n const previousRows = rows.slice(0, idx)\r\n const uniqueValues = state[data].filter(\r\n item => !previousRows.some(row => row[key] === item[keyValue])\r\n )\r\n // update state\r\n state[data] = uniqueValues\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n updateValueInRow(idx, key, e.target.value)\r\n }}\r\n value={rows[idx][key]}\r\n input={}\r\n >\r\n {state[data].map(option => (\r\n \r\n {key !== 'noteType'\r\n ? `${option[keyValue]} - ${option[valueKey]}`\r\n : option[valueKey]}\r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const addPackLineFromLinkedOrderLines = rowData => {\r\n // need to get unique order numbers from rowData array\r\n const uniqueOrderNumbers = rowData.reduce((acc, curr) => {\r\n if (!acc.includes(curr.orderNumber)) {\r\n acc.push(curr.orderNumber)\r\n }\r\n return acc\r\n }, [])\r\n\r\n const orderNumbers = uniqueOrderNumbers.join(', ')\r\n const summedVolume = rowData.reduce((a, b) => a + (b['volume'] || 0), 0)\r\n const summedWeight = rowData.reduce((a, b) => a + (b['weight'] || 0), 0)\r\n const summedQuantity = rowData.reduce(\r\n (a, b) => a + (b['outerPacks'] || 0),\r\n 0\r\n )\r\n const newRow = {\r\n referenceNumber: orderNumbers,\r\n volume: summedVolume.toFixed(2),\r\n volumeUOM: rowData[0].volumeUOM,\r\n weight: summedWeight.toFixed(2),\r\n weightUOM: rowData[0].weightUOM,\r\n quantity: summedQuantity,\r\n quantityUOM: rowData[0].outerPacksType\r\n }\r\n\r\n setRows([...rows, newRow])\r\n }\r\n\r\n const renderLinkedOrderLines = () => {\r\n const tableTheme = createTheme()\r\n const tableActions = [\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n onClick: (event, rowData) => {\r\n addPackLineFromLinkedOrderLines(rowData)\r\n },\r\n tooltip: 'Create Pack Line'\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 const getTypesData = async createShipmentId => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL&createShipmentId=' +\r\n createShipmentId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDataMapping(JSON.stringify(data))\r\n setDataTypes(data)\r\n }\r\n }\r\n\r\n const renderAlert = () => {\r\n return alert.open ? (\r\n
\r\n handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault()\r\n\r\n // check if shipment type if FCL and if so, make sure that there is at least one container loaded\r\n if (\r\n props.shipmentKey === 'containers' &&\r\n shipment.containerTypeCode === 'FCL' &&\r\n rows.length === 0\r\n ) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message: 'FCL shipments require at least one container.'\r\n })\r\n return\r\n }\r\n\r\n // check if each container row has information filled in\r\n if (props.shipmentKey === 'containers') {\r\n const emptyFields = rows.flatMap(row =>\r\n props.columns\r\n .filter(column => column.required && !row[column.id])\r\n .map(column => column.label)\r\n )\r\n if (emptyFields.length > 0) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Container Type and Number of Containers are required fields.'\r\n })\r\n return\r\n }\r\n }\r\n\r\n // check any row in rows has no type code\r\n if (\r\n props.shipmentKey === 'notes' &&\r\n rows.some(row => !row['noteTypeCode'])\r\n ) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message: 'Note Type Code is required.'\r\n })\r\n return\r\n }\r\n\r\n saveShipmentData(_.omitBy(shipment, _.isNil))\r\n }\r\n\r\n const parseRowData = () => {\r\n const floats = props.columns\r\n .filter(column => column.type === 'number')\r\n .map(column => column.id)\r\n return rows.map(row => {\r\n for (var key in row) {\r\n const keyIn = floats.includes(key)\r\n row[key] = keyIn ? parseFloat(row[key]) : row[key]\r\n }\r\n return row\r\n })\r\n }\r\n\r\n const saveShipmentData = async data => {\r\n if (props.shipmentKey === 'notes') {\r\n const notes = rows.map(row => {\r\n return {\r\n noteTypeCode: row.noteTypeCode,\r\n noteText: row.noteText.replace(/\\n/g, '##newline##')\r\n }\r\n })\r\n setRows(notes)\r\n }\r\n\r\n data[props.shipmentKey] = parseRowData()\r\n\r\n const token = await authService.getAccessToken()\r\n await fetch(\r\n 'api/createShipments/PutCreateShipment?sourceForm=' +\r\n props.sourceForm,\r\n {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n }\r\n ).then(response => {\r\n if (response.ok) {\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message: 'Shipment information is saved. Redirecting...'\r\n })\r\n setTimeout(() => {\r\n window.location.replace(props.redirectURL)\r\n }, 3000)\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving shipment details.'\r\n })\r\n }\r\n })\r\n }\r\n\r\n const renderItem = (item, rowIndex) => {\r\n if (item.type === 'text' || item.type === 'number') {\r\n return renderInputCell(rowIndex, item.id)\r\n } else if (item.type === 'dropdown') {\r\n return renderSelectCell(\r\n rowIndex,\r\n item.id,\r\n item.label,\r\n item.dataKey,\r\n item.unique\r\n )\r\n }\r\n return
\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 {props.title || ''}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Line #\r\n \r\n {props.columns.map(\r\n (column, index) => (\r\n \r\n {column.label}\r\n \r\n )\r\n )}\r\n \r\n \r\n \r\n {rows\r\n ? rows.map((item, idx) => (\r\n \r\n \r\n {idx + 1}\r\n \r\n {props.columns.map(\r\n function (i) {\r\n return renderItem(\r\n i,\r\n 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 : null}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {renderAlert()}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {props.backURL !== null &&\r\n props.backURL !== undefined && (\r\n \r\n window.location.replace(\r\n props.backURL\r\n )\r\n }\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Back\r\n \r\n )}\r\n {props.showSkip && (\r\n \r\n // check if container type is 'FCL', if so then make sure at least one container has been added\r\n props.shipmentKey ===\r\n 'containers' &&\r\n shipment.containerTypeCode ===\r\n 'FCL' &&\r\n rows.length === 0\r\n ? setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'FCL shipments require at least one container.'\r\n })\r\n : window.location.replace(\r\n props.redirectURL\r\n )\r\n }\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Skip\r\n \r\n )}\r\n \r\n {props.submitButtonText || 'Save/Next'}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {props.shipmentKey === 'packLines' && renderLinkedOrderLines()}\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport CreateShipmentTable from './CreateShipmentTable'\r\nimport ShipmentCreationProgress from './ShipmentCreationProgress'\r\nimport { getShipmentKey, isNotFclOrFtl } from '../../utils/shipment'\r\nimport { getCreatedShipment, getClientData } from '../../api/api'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n getNextEnabledBookingStep,\r\n getPreviousEnabledBookingStep,\r\n hasAccessToStep\r\n} from './CreateBookingFunctions'\r\n\r\nconst columns = [\r\n { id: 'referenceNumber', label: 'Reference #', type: 'text' },\r\n { id: 'weight', label: 'Weight', type: 'number' },\r\n {\r\n id: 'weightUOM',\r\n label: 'Weight UOM',\r\n type: 'dropdown',\r\n dataKey: 'weightUnits'\r\n },\r\n { id: 'volume', label: 'Volume', type: 'number' },\r\n {\r\n id: 'volumeUOM',\r\n label: 'Volume UOM',\r\n type: 'dropdown',\r\n dataKey: 'volumeUnits'\r\n },\r\n { id: 'quantity', label: 'Pce Count', type: 'number' },\r\n {\r\n id: 'quantityUOM',\r\n label: 'Pce Count UOM',\r\n type: 'dropdown',\r\n dataKey: 'pieceUnits'\r\n },\r\n { id: 'dimensionLength', label: 'Length', type: 'number' },\r\n { id: 'dimensionWidth', label: 'Width', type: 'number' },\r\n { id: 'dimensionHeight', label: 'Height', type: 'number' },\r\n {\r\n id: 'dimensionUOM',\r\n label: 'Length UOM',\r\n type: 'dropdown',\r\n dataKey: 'lengthUnits'\r\n },\r\n {\r\n id: 'commodityCode',\r\n label: 'Commodity',\r\n type: 'dropdown',\r\n dataKey: 'commodities'\r\n },\r\n {\r\n id: 'goodsDescription',\r\n label: 'Goods Description',\r\n type: 'text'\r\n }\r\n]\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n },\r\n heading: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n}))\r\n\r\nexport default function PackLinesInfo() {\r\n const [submitText, setSubmitText] = useState('Submit')\r\n const [showSkip, setShowSkip] = useState(true)\r\n const [shipment, setShipment] = useState(null)\r\n const [client, setClient] = useState(null)\r\n const [nextBookingStep, setNextBookingStep] = useState(null)\r\n const [previousBookingStep, setPreviousBookingStep] = useState(null)\r\n\r\n useEffect(() => {\r\n const shipmentNumber = getShipmentKey()\r\n if (shipmentNumber !== null && shipmentNumber !== undefined) {\r\n getCreatedShipment(shipmentNumber, null, null, data => {\r\n setShipment(data)\r\n const { containerTypeCode } = data\r\n setSubmitText(\r\n isNotFclOrFtl(containerTypeCode)\r\n ? 'Save/Review'\r\n : 'Save/Next'\r\n )\r\n })\r\n } else {\r\n window.location.replace('/shipments/create')\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!shipment) return\r\n getClientData(\r\n shipment.clientId,\r\n data => {\r\n setClient(data)\r\n const nextStep = getNextEnabledBookingStep(\r\n 2,\r\n data.bookingSteps,\r\n shipment.containerTypeCode\r\n )\r\n setNextBookingStep(nextStep)\r\n setPreviousBookingStep(\r\n getPreviousEnabledBookingStep(2, data.bookingSteps)\r\n )\r\n if (!hasAccessToStep(2, data.bookingSteps)) {\r\n window.location.replace(nextStep.href)\r\n }\r\n },\r\n () => {\r\n setClient({})\r\n }\r\n )\r\n }, [shipment])\r\n\r\n return (\r\n client &&\r\n shipment && (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport CreateShipmentTable from './CreateShipmentTable'\r\nimport ShipmentCreationProgress from './ShipmentCreationProgress'\r\nimport { isNotFclOrFtl, getShipmentKey } from '../../utils/shipment'\r\nimport { getCreatedShipment, getClientData } from '../../api/api'\r\nimport {\r\n getPreviousEnabledBookingStep,\r\n getNextEnabledBookingStep,\r\n hasAccessToStep\r\n} from './CreateBookingFunctions'\r\n\r\nconst columns = [\r\n {\r\n id: 'containerTypeCode',\r\n label: 'Container Types',\r\n type: 'dropdown',\r\n dataKey: 'containerModes',\r\n required: true\r\n },\r\n {\r\n id: 'numberOfContainers',\r\n label: 'Number of Containers',\r\n type: 'number',\r\n required: true\r\n },\r\n {\r\n id: 'containerCommodityCode',\r\n label: 'Commodity',\r\n type: 'dropdown',\r\n dataKey: 'commodities'\r\n }\r\n]\r\n\r\nexport default function Containers(props) {\r\n const [shipment, setShipment] = useState(null)\r\n const [client, setClient] = useState(null)\r\n const [previousBookingStep, setPreviousBookingStep] = useState(null)\r\n const [nextBookingStep, setNextBookingStep] = useState(null)\r\n\r\n useEffect(() => {\r\n const shipmentNumber = getShipmentKey()\r\n if (shipmentNumber !== null && shipmentNumber !== undefined) {\r\n getCreatedShipment(shipmentNumber, null, null, data => {\r\n setShipment(data)\r\n })\r\n } else {\r\n window.location.replace('/shipments/create')\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!shipment) return\r\n getClientData(\r\n shipment.clientId,\r\n data => {\r\n setClient(data)\r\n const nextStep = getNextEnabledBookingStep(\r\n 3,\r\n data.bookingSteps,\r\n shipment.containerTypeCode\r\n )\r\n setNextBookingStep(nextStep)\r\n setPreviousBookingStep(\r\n getPreviousEnabledBookingStep(3, data.bookingSteps)\r\n )\r\n if (\r\n !hasAccessToStep(\r\n 3,\r\n data.bookingSteps,\r\n shipment.containerTypeCode\r\n )\r\n ) {\r\n window.location.replace(nextStep.href)\r\n }\r\n },\r\n () => {\r\n setClient({})\r\n }\r\n )\r\n }, [shipment])\r\n\r\n return (\r\n client &&\r\n shipment && (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport CreateShipmentTable from './CreateShipmentTable'\r\nimport ShipmentCreationProgress from './ShipmentCreationProgress'\r\nimport { isNotFclOrFtl, getShipmentKey } from '../../utils/shipment'\r\nimport { getCreatedShipment, getClientData } from '../../api/api'\r\nimport {\r\n getNextEnabledBookingStep,\r\n hasAccessToStep\r\n} from './CreateBookingFunctions'\r\n\r\nconst columns = [\r\n {\r\n id: 'noteTypeCode',\r\n label: 'Note Type',\r\n type: 'dropdown',\r\n dataKey: 'noteUnits',\r\n unique: true\r\n },\r\n { id: 'noteText', label: 'Text', type: 'text' }\r\n]\r\n\r\nexport default function Notes() {\r\n const [shipment, setShipment] = useState(null)\r\n const [client, setClient] = useState(null)\r\n const [nextBookingStep, setNextBookingStep] = useState(null)\r\n\r\n useEffect(() => {\r\n const shipmentNumber = getShipmentKey()\r\n if (shipmentNumber !== null && shipmentNumber !== undefined) {\r\n getCreatedShipment(shipmentNumber, null, null, data => {\r\n setShipment(data)\r\n })\r\n } else {\r\n window.location.replace('/shipments/create')\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!shipment) return\r\n getClientData(\r\n shipment.clientId,\r\n data => {\r\n setClient(data)\r\n const nextStep = getNextEnabledBookingStep(\r\n 1,\r\n data.bookingSteps,\r\n shipment.containerTypeCode\r\n )\r\n if (!hasAccessToStep(1, data.bookingSteps)) {\r\n window.location.replace(nextStep.href)\r\n }\r\n setNextBookingStep(nextStep)\r\n },\r\n () => {\r\n setClient({})\r\n }\r\n )\r\n }, [shipment])\r\n\r\n return (\r\n client &&\r\n shipment && (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../shared/TableHelper'\r\nimport CardTitle from '../shared/CardTitle'\r\n\r\nconst notes = [\r\n { key: 'title', label: 'Note Type', icon: false },\r\n { key: 'date', label: 'Date', icon: false },\r\n { key: 'note', label: 'Detail', icon: false }\r\n]\r\n\r\nconst notesReview = [\r\n { key: 'noteTypeCode', label: 'Note Type', icon: false },\r\n { key: 'noteText', label: 'Text', icon: false }\r\n]\r\n\r\nexport default function ShipmentNotesTable({ item, isReview, classes }) {\r\n if (item?.notes) {\r\n item.notes.forEach(note => {\r\n note.noteText = note.noteText.replace(/##newline##/g, '\\n')\r\n })\r\n }\r\n return item !== null &&\r\n item !== undefined &&\r\n item.notes !== null &&\r\n item.notes !== undefined ? (\r\n \r\n {renderTable(\r\n item.notes,\r\n isReview ? notesReview : notes,\r\n 'notes',\r\n classes,\r\n () => {},\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n ) : (\r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './CardTitle'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\n\r\nexport default function ShipmentContactCard({ item, title }) {\r\n const theme = useTheme()\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n Address\r\n
\r\n {(item !== null && item.name) || ''}\r\n
\r\n \r\n {(item !== null && item.addressLine1) || ''}\r\n \r\n
\r\n \r\n {(item !== null && item.city) || ''},{' '}\r\n {(item !== null && item.state) || ''},{' '}\r\n {(item !== null && item.zipCode) || ''}\r\n \r\n
\r\n {(item !== null && item.country) || ''}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport ShipmentCreationProgress from './ShipmentCreationProgress'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { getShipmentKey, removeShipmentKey } from '../../utils/shipment'\r\nimport { getCreatedShipment, getClientData } from '../../api/api'\r\nimport { Grid, Button } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport AlertMessage from '../shared/Alert'\r\nimport _ from 'lodash'\r\nimport '../shared/ShipmentDetailCard'\r\nimport ShipmentInfoCard from '../shared/ShipmentInfoCard'\r\nimport ShipmentDetailCard from '../shared/ShipmentDetailCard'\r\nimport ShipmentNotesTable from '../shared/ShipmentNotesTable'\r\nimport ShipmentContainersTable from '../shared/ShipmentContainersTable'\r\nimport ShipmentPacklinesTable from '../shared/ShipmentPacklinesTable'\r\nimport ShipmentContactCard from '../shared/ShipmentContactCard'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { isNotFclOrFtl } from '../../utils/shipment'\r\nimport DialogOk from '../shared/DialogOk'\r\nimport { ApplicationPaths } from '../api-authorization/ApiAuthorizationConstants'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { getPreviousEnabledBookingStep } from './CreateBookingFunctions'\r\nimport { getOrgViewCodeFromOrganization } from '../../utils/organizations'\r\nimport { retrievePageFields } from '../shared/Views'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function Review() {\r\n const [shipment, setShipment] = useState(null)\r\n const [showContainers, setShowContainers] = useState(false)\r\n const [dialogOpen, setDialogOpen] = useState(false)\r\n const [submitSuccess, setSubmitSuccess] = useState(false)\r\n const [createdShipment, setCreatedShipment] = useState(null)\r\n const [dialogMessage, setDialogMessage] = useState('')\r\n const [alert, setAlert] = useState([\r\n {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n ])\r\n const [isSubmitting, setIsSubmitting] = useState(false)\r\n const [isUpdating, setIsUpdating] = useState(false)\r\n const [organization, setOrganization] = useState(null)\r\n const [client, setClient] = useState(null)\r\n const [previousBookingStep, setPreviousBookingStep] = useState(null)\r\n const [pageFields, setPageFields] = useState(null)\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n\r\n const dateFns = new DateFnsUtils()\r\n const history = useHistory()\r\n const getFormattedDate = (date, organization) => {\r\n if (\r\n date === null ||\r\n date === undefined ||\r\n date === '0001-01-01T00:00:00' ||\r\n organization === null ||\r\n organization === undefined\r\n ) {\r\n return '-'\r\n }\r\n let dateFormat = organization?.pickerDateFormat\r\n return dateFns.moment(date).format(dateFormat)\r\n }\r\n\r\n useEffect(() => {\r\n retrievePageFields('createbooking').then(data => {\r\n setPageFields(data)\r\n })\r\n getOrgViewCode()\r\n }, [])\r\n\r\n useEffect(() => {\r\n const shipmentNumber = getShipmentKey()\r\n\r\n fetch('api' + ApplicationPaths.AppInfo).then(response => {\r\n response.json().then(data => {\r\n setOrganization(data)\r\n })\r\n })\r\n\r\n if (shipmentNumber !== null && shipmentNumber !== undefined) {\r\n getCreatedShipment(shipmentNumber, null, null, data => {\r\n setShipment(data)\r\n setShowContainers(!isNotFclOrFtl(data.containerTypeCode))\r\n })\r\n } else {\r\n window.location.replace('/shipments/create')\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!shipment) return\r\n getClientData(\r\n shipment.clientId,\r\n data => {\r\n setClient(data)\r\n setPreviousBookingStep(\r\n getPreviousEnabledBookingStep(\r\n 4,\r\n data.bookingSteps,\r\n shipment.containerTypeCode\r\n )\r\n )\r\n },\r\n () => {\r\n setClient({})\r\n }\r\n )\r\n }, [shipment])\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n const saveShipmentData = async (data, submitType) => {\r\n // need to check if shipment is FCL, if so it needs to have at least one container\r\n if (data.containerTypeCode) {\r\n if (data.containerTypeCode === 'FCL') {\r\n if (!data.containers || data.containers.length === 0) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message: 'FCL shipments require at least one container.'\r\n })\r\n return\r\n }\r\n }\r\n }\r\n\r\n // need to check if summed quantity from packlines is equal to piecesCount, if there are packlines\r\n if (data.packLines && data.packLines.length > 0) {\r\n const summedQuantity = data.packLines.reduce((acc, packline) => {\r\n return acc + packline.quantity\r\n }, 0)\r\n if (summedQuantity !== data.piecesCount) {\r\n // get the user to confirm they still want to continue\r\n if (\r\n !window.confirm(\r\n `The total quantity of packlines (${summedQuantity}) does not match the total pieces count (${data.piecesCount}). \\nDo you still want to continue?`\r\n )\r\n ) {\r\n return\r\n }\r\n }\r\n }\r\n\r\n if (submitType === 'update') {\r\n if (\r\n !window.confirm(\r\n `Submit booking details? \\nThis will update booking # ${data.cW1BookingNumber} in CW1.`\r\n )\r\n ) {\r\n return\r\n }\r\n } else if (submitType === 'new') {\r\n if (\r\n !window.confirm(\r\n `Submit booking details?`\r\n )\r\n ) {\r\n return\r\n }\r\n }\r\n\r\n if (submitType == 'update') {\r\n setIsUpdating(true)\r\n } else if (submitType === 'new') {\r\n setIsSubmitting(true)\r\n }\r\n\r\n if (submitType === 'new') {\r\n data.cW1BookingNumber = null\r\n }\r\n const token = await authService.getAccessToken()\r\n await fetch('api/createShipments/PutCreateShipment?shouldSubmit=true', {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const newData = await response.json()\r\n\r\n if (newData.shipmentCreated === true) {\r\n setDialogOpen(true)\r\n setSubmitSuccess(true)\r\n setCreatedShipment(newData)\r\n setDialogMessage(\r\n 'Booking was successful, your shipment booking reference is ' +\r\n newData.shipmentNumber +\r\n ' from ' +\r\n newData.organizationName +\r\n ' System – once our team confirms the booking ' +\r\n newData.shipmentNumber +\r\n ' will appear in your active shipment list.'\r\n )\r\n removeShipmentKey()\r\n } else {\r\n setDialogOpen(true)\r\n setSubmitSuccess(false)\r\n setDialogMessage(\r\n 'There was an error creating this booking: ' +\r\n newData.errorMessage || ''\r\n )\r\n }\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this Shipment information.'\r\n })\r\n setIsSubmitting(false)\r\n setIsUpdating(false)\r\n })\r\n // probably don't need this\r\n setIsSubmitting(false)\r\n setIsUpdating(false)\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const goToSection = path => {\r\n history.push(path)\r\n }\r\n\r\n const renderAlert = () => {\r\n return alert.open ? (\r\n
\r\n handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n const getShipperName = () => {\r\n if (\r\n shipment !== null &&\r\n shipment.contacts !== null &&\r\n shipment.contacts !== undefined\r\n ) {\r\n const contacts = shipment.contacts.filter(\r\n contact => contact.addressType === 'PIC'\r\n )\r\n if (contacts.length > 0) {\r\n return contacts[0].name\r\n }\r\n }\r\n\r\n return '-'\r\n }\r\n\r\n const getConsigeeName = () => {\r\n if (\r\n shipment !== null &&\r\n shipment.contacts !== null &&\r\n shipment.contacts !== undefined\r\n ) {\r\n const contacts = shipment.contacts.filter(\r\n contact => contact.addressType === 'DLV'\r\n )\r\n if (contacts.length > 0) {\r\n return contacts[0].name\r\n }\r\n }\r\n\r\n return '-'\r\n }\r\n\r\n const handleActionDialog = action => {\r\n setDialogOpen(false)\r\n if (submitSuccess) {\r\n goToSection(\r\n ApplicationPaths.Bookings +\r\n '/' +\r\n createdShipment.clientId +\r\n '/' +\r\n createdShipment.shipmentNumber\r\n )\r\n }\r\n }\r\n\r\n const parseShipmentDetailData = data => {\r\n // need to remove orderreferencenumber property from data object\r\n // since it is not part of the shipment object\r\n const { orderReferenceNumber, ...shipment } = data\r\n return shipment\r\n }\r\n\r\n const getCargoReadyDate = shipment => {\r\n switch (orgViewCode) {\r\n case 931:\r\n return getFormattedDate(shipment.requiredPickup, organization)\r\n default:\r\n return getFormattedDate(shipment.cargoReadyDate, organization)\r\n }\r\n }\r\n\r\n const showField = field => {\r\n if (pageFields) {\r\n const requiredField = pageFields.find(\r\n pageField => pageField.field === field\r\n )\r\n if (requiredField) {\r\n return requiredField.visible\r\n }\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n const getShowRequiredETD = () => {\r\n return showField('review.etd')\r\n }\r\n\r\n const getShowRequiredETA = () => {\r\n return showField('review.eta')\r\n }\r\n\r\n const getShowRequiredPickup = () => {\r\n return showField('review.requiredpickup')\r\n }\r\n\r\n const getShowRequestedDelivery = () => {\r\n return showField('review.requesteddelivery')\r\n }\r\n\r\n const getShowShippersRef = () => {\r\n return showField('review.shippersref')\r\n }\r\n\r\n const getShowOwnersRef = () => {\r\n return showField('review.ownersref')\r\n }\r\n\r\n return (\r\n
\r\n {client && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {shipment !== null &&\r\n shipment !== undefined &&\r\n shipment.contacts !== null &&\r\n shipment.contacts !== undefined && (\r\n \r\n contact.addressType ===\r\n 'PIC'\r\n )[0]\r\n }\r\n />\r\n )}\r\n \r\n \r\n {shipment !== null &&\r\n shipment !== undefined &&\r\n shipment.contacts !== null &&\r\n shipment.contacts !== undefined && (\r\n \r\n contact.addressType ===\r\n 'DLV'\r\n )[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 {showContainers && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n {renderAlert()}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n window.location.replace(\r\n previousBookingStep.href\r\n )\r\n }\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Back\r\n \r\n {shipment.cW1BookingNumber && (\r\n <>\r\n {\r\n saveShipmentData(\r\n _.omitBy(shipment, _.isNil),\r\n 'update'\r\n )\r\n }}\r\n className={classes.submit}\r\n variant=\"contained\"\r\n disabled={\r\n isUpdating || isSubmitting\r\n }\r\n color=\"primary\"\r\n >\r\n {isUpdating\r\n ? 'Updating...'\r\n : 'Update CW1 Booking'}\r\n \r\n  \r\n {\r\n saveShipmentData(\r\n _.omitBy(shipment, _.isNil),\r\n 'new'\r\n )\r\n }}\r\n className={classes.submit}\r\n variant=\"contained\"\r\n disabled={\r\n isSubmitting || isUpdating\r\n }\r\n color=\"primary\"\r\n >\r\n {isSubmitting\r\n ? 'Submitting...'\r\n : 'Submit As New Booking'}\r\n \r\n \r\n )}\r\n {!shipment.cW1BookingNumber && (\r\n {\r\n saveShipmentData(\r\n _.omitBy(shipment, _.isNil),\r\n 'new'\r\n )\r\n }}\r\n className={classes.submit}\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n color=\"primary\"\r\n >\r\n {isSubmitting\r\n ? 'Submitting...'\r\n : 'Submit Booking'}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n

{dialogMessage}

\r\n \r\n
\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Grid, CardContent } from '@material-ui/core'\r\nimport { Table, TableContainer, TableBody } from '@material-ui/core'\r\nimport { TableRow, TableCell, TableHead } from '@material-ui/core'\r\nimport { TextField, IconButton, Button } from '@material-ui/core'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport AlertMessage from './shared/Alert'\r\n\r\nconst CreateShipment = {\r\n pathname: `${ApplicationPaths.CreateShipment}`\r\n}\r\n\r\nconst classes = makeStyles(theme => ({\r\n table: {\r\n minWidth: 650\r\n }\r\n}))\r\n\r\nconst columns = [\r\n { id: 'idLine', label: 'Line #', minWidth: 80 },\r\n { id: 'weight', label: 'Weight' },\r\n { id: 'length', label: 'Length' },\r\n { id: 'width', label: 'Width' },\r\n { id: 'height', label: 'Height' }\r\n]\r\n\r\nexport class PackageLineInfo extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n rows: [\r\n {\r\n id: 1,\r\n weight: '',\r\n length: '',\r\n width: '',\r\n height: ''\r\n }\r\n ],\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n }\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n handleChange(e, idx, name) {\r\n const { value } = e.target\r\n const rows = [...this.state.rows]\r\n rows[idx][name] = value\r\n this.setState({\r\n rows\r\n })\r\n }\r\n\r\n handleAddRow = () => {\r\n const item = {\r\n id: this.state.rows.length + 1,\r\n weight: '',\r\n length: '',\r\n width: '',\r\n height: ''\r\n }\r\n this.setState({\r\n rows: [...this.state.rows, item]\r\n })\r\n }\r\n\r\n handleRemoveSpecificRow = idx => () => {\r\n const rows = [...this.state.rows]\r\n rows.splice(idx, 1)\r\n\r\n rows.map(function (item, key) {\r\n var row = item\r\n row.id = key + 1\r\n return rows\r\n })\r\n\r\n this.setState({ rows })\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n this.handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Packing Line Info\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {columns.map(column => (\r\n \r\n {column.label}\r\n \r\n ))}\r\n \r\n \r\n \r\n {this.state.rows.map(\r\n (item, idx) => (\r\n \r\n \r\n {idx + 1}\r\n \r\n \r\n \r\n this.handleChange(\r\n e,\r\n idx,\r\n 'weight'\r\n )\r\n }\r\n className=\"form-control\"\r\n />\r\n \r\n \r\n \r\n this.handleChange(\r\n e,\r\n idx,\r\n 'length'\r\n )\r\n }\r\n className=\"form-control\"\r\n />\r\n \r\n \r\n \r\n this.handleChange(\r\n e,\r\n idx,\r\n 'width'\r\n )\r\n }\r\n className=\"form-control\"\r\n />\r\n \r\n \r\n \r\n this.handleChange(\r\n e,\r\n idx,\r\n 'height'\r\n )\r\n }\r\n className=\"form-control\"\r\n />\r\n \r\n \r\n \r\n \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.renderAlert()}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Back\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Save/Next\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle'\r\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'\r\nimport IconButton from '@material-ui/core/IconButton'\r\n\r\nconst steps = [\r\n { index: 0, title: 'Order Details', href: '/orders/create' },\r\n { index: 1, title: 'Notes', href: '/orders/create/notes' },\r\n { index: 2, title: 'Lines', href: '/orders/create/lines' },\r\n { index: 3, title: 'Review', href: '/orders/create/review' }\r\n]\r\n\r\nexport default function OrderCreationProgress({ index, hideIndexes = [] }) {\r\n const renderStepButton = (step, checked) => {\r\n return (\r\n (window.location.href = step.href)}\r\n >\r\n {checked ? : }\r\n \r\n )\r\n }\r\n\r\n const renderStep = (step, i) => {\r\n if (hideIndexes.includes(i)) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n {step.index < index && renderStepButton(step, true)}\r\n {step.index >= index && renderStepButton(step, false)}\r\n \r\n \r\n {step.title}\r\n \r\n \r\n )\r\n }\r\n return (\r\n
\r\n \r\n {steps.map((step, i) => {\r\n return renderStep(step, i)\r\n })}\r\n \r\n
\r\n )\r\n}\r\n","const orderIdKey = 'order.create.orderId'\r\n\r\nexport const redirectUrlForPacklines = () => {\r\n return '/orders/create/review'\r\n}\r\n\r\nexport const backUrlForReview = () => {\r\n return '/orders/create/lines'\r\n}\r\n\r\nexport const getOrderKey = () => {\r\n return sessionStorage.getItem(orderIdKey)\r\n}\r\n\r\nexport const removeOrderKey = () => {\r\n return sessionStorage.removeItem(orderIdKey)\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { CardContent, Grid } from '@material-ui/core'\r\nimport {\r\n FormControl,\r\n TextField,\r\n Button,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListItemSecondaryAction\r\n} from '@material-ui/core'\r\nimport Autocomplete from '@material-ui/lab/Autocomplete'\r\nimport { Input, InputLabel } from '@material-ui/core'\r\nimport { MenuItem, Select, Typography } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport AlertMessage from './shared/Alert'\r\nimport voca from 'voca'\r\nimport { useForm, Controller } from 'react-hook-form'\r\nimport _ from 'lodash'\r\nimport { CustomDialog } from './shared/CustomDialog'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport OrderCreationProgress from './CreateOrder/OrderCreationProgress'\r\nimport { canCreateOrder } from '../utils/permissions'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker\r\n} from '@material-ui/pickers'\r\nimport { getCreatedOrder, getCreateOrderTemplate, getUNLOCO } from '../api/api'\r\nimport Accordion from '@material-ui/core/Accordion'\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary'\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport ToggleButton from '@material-ui/lab/ToggleButton'\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport { getOrgViewCodeFromOrganization } from '../utils/organizations'\r\nimport { getOrderKey } from '../utils/order'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n },\r\n heading: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n}))\r\n\r\nexport default function CreateOrderForm(props) {\r\n const {\r\n register,\r\n handleSubmit,\r\n errors,\r\n formState,\r\n setValue,\r\n getValues,\r\n control,\r\n watch\r\n } = useForm()\r\n const { isDirty } = formState\r\n\r\n const [hasAccess, setHasAccess] = useState(false)\r\n const [templateLoading, setTemplateLoading] = useState(false)\r\n const watchTransportMode = watch('transportModeCode')\r\n const [organization, setOrganization] = useState([])\r\n const [clients, setClients] = useState([])\r\n const [transportModes, setTransportModes] = useState([])\r\n const [incoTerms, setIncoTerms] = useState([])\r\n const [containerModes, setContainerModes] = useState([])\r\n const [serviceLevels, setServiceLevels] = useState([])\r\n const [currencyCodes, setCurrencyCodes] = useState([])\r\n const [addresses, setAddresses] = useState([])\r\n const [filteredAddresses, setFilteredAddresses] = useState([])\r\n const [orgConsigneeAddresses, setOrgConsigneeAddresses] = useState([])\r\n const [filteredOrgConsigneeAddresses, setFilteredOrgConsigneeAddresses] =\r\n useState([])\r\n const [orgConsignorAddresses, setOrgConsignorAddresses] = useState([])\r\n const [filteredOrgConsignorAddresses, setFilteredOrgConsignorAddresses] =\r\n useState([])\r\n const [isConsignor, setIsConsignor] = useState(false)\r\n const [originUnlocoCodes, setOriginUnlocoCodes] = useState([])\r\n const [destinationUnlocoCodes, setDestinationUnlocoCodes] = useState([])\r\n const [loadPorts, setLoadUnlocoCodes] = useState([])\r\n const [dischargePorts, setDischargeUnlocoCodes] = useState([])\r\n const [filteredContainerModes, setFilteredContainerModes] = useState([])\r\n const [didSetOriginUnlocoCode, setDidSetOriginUnlocoCode] = useState(false)\r\n const [didSetDestinationUnlocoCode, setDidSetDestinationUnlocoCode] =\r\n useState(false)\r\n const [didSetLoadPort, setDidSetLoadPortUnlocoCode] = useState(false)\r\n const [didSetDischargePort, setDidSetDischargePortUnlocoCode] =\r\n useState(false)\r\n const [originUNLOCOCodeObject, setOriginUNLOCOCodeObject] = useState(null)\r\n const [destinationUNLOCOCodeObject, setDestinationUNLOCOCodeObject] =\r\n useState(null)\r\n const [loadPortObject, setLoadPortUNLOCOCodeObject] = useState(null)\r\n const [dischargePortObject, setDischargePortUNLOCOCodeObject] =\r\n useState(null)\r\n const [didLoadOrder, setDidLoadOrder] = useState(false)\r\n const [modalOpen, setModalOpen] = useState(false)\r\n const [consignorAddressesModalOpen, setConsignorAddressesModalOpen] =\r\n useState(false)\r\n const [consigneeAddressesModalOpen, setConsigneeAddressesModalOpen] =\r\n useState(false)\r\n const [key, setKey] = useState(['order.create'])\r\n const [organizationId, setOrganizationId] = useState(null)\r\n const [orderAlert, setOrderAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [templateDialogAlert, setTemplateDialogAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [expandedPanels, setExpandedPanels] = useState([\r\n 'panel0',\r\n 'panel1',\r\n 'panel2',\r\n 'panel3',\r\n 'panel4',\r\n 'panel5'\r\n ])\r\n const [colorThemePrimaryRGB, setcolorThemePrimaryRGB] = useState('')\r\n const [colorThemeSecondaryRGB, setcolorThemeSecondaryRGB] = useState('')\r\n const [colorThemeTertiaryRGB, setcolorThemeTertiaryRGB] = useState('')\r\n const [colorThemeRGB, setcolorThemeRGB] = useState('')\r\n const [colorThemeTextRGB, setcolorThemeTextRGB] = useState('')\r\n const [retrievingOrder, setRetrievingOrder] = useState(false)\r\n const [retrievingOrderReferred, setRetrievingOrderReferred] =\r\n useState(false)\r\n const [addressSearchValue, setAddressSearchValue] = useState('')\r\n const [orderNumberLabel, setOrderNumberLabel] = useState('Order #')\r\n const [templates, setTemplates] = useState([])\r\n const [templateModalOpen, setTemplateModalOpen] = useState(false)\r\n const [filteredTemplates, setFilteredTemplates] = useState([])\r\n const [selectedAddressForeignKey, setselectedAddressForeignKey] =\r\n useState(null)\r\n const [currentClient, setCurrentClient] = useState(null)\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n\r\n useEffect(() => {\r\n const orderId = sessionStorage.getItem(orderIdKey())\r\n if (orderId !== null && orderId !== undefined) {\r\n loadOrder(orderId)\r\n } else {\r\n setDidSetDestinationUnlocoCode(true)\r\n setDidSetOriginUnlocoCode(true)\r\n setDidSetLoadPortUnlocoCode(true)\r\n setDidSetDischargePortUnlocoCode(true)\r\n }\r\n\r\n getTypesData()\r\n\r\n if (!getValues('orderNumberSplit')) {\r\n setValue('orderNumberSplit', '0')\r\n }\r\n\r\n getClients()\r\n getOrderTemplates()\r\n getOrgViewCode()\r\n }, [])\r\n\r\n useEffect(() => {\r\n setValue('containerTypeMode', null)\r\n if (getValues('transportModeCode') === 'AIR') {\r\n setFilteredContainerModes(\r\n containerModes.filter(mode => mode.propertyKey === 'LSE')\r\n )\r\n } else if (getValues('transportModeCode') === 'SEA') {\r\n setFilteredContainerModes(\r\n containerModes.filter(\r\n mode =>\r\n mode.propertyKey === 'FCL' || mode.propertyKey === 'LCL'\r\n )\r\n )\r\n } else if (getValues('transportModeCode') === 'RAI') {\r\n setFilteredContainerModes(\r\n containerModes.filter(mode => mode.propertyKey === 'FCL')\r\n )\r\n } else if (getValues('transportModeCode') === 'ROA') {\r\n setFilteredContainerModes(\r\n containerModes.filter(\r\n mode =>\r\n mode.propertyKey === 'FCL' ||\r\n mode.propertyKey === 'LCL' ||\r\n mode.propertyKey === 'LTL' ||\r\n mode.propertyKey === 'FTL'\r\n )\r\n )\r\n } else {\r\n setFilteredContainerModes(containerModes)\r\n }\r\n }, [watchTransportMode])\r\n\r\n useEffect(() => {\r\n if (originUnlocoCodes.length > 0 && !didSetOriginUnlocoCode) {\r\n setOriginUNLOCOCodeObject(originUnlocoCodes[0])\r\n setDidSetOriginUnlocoCode(true)\r\n }\r\n }, [originUnlocoCodes])\r\n\r\n useEffect(() => {\r\n if (destinationUnlocoCodes.length > 0 && !didSetDestinationUnlocoCode) {\r\n setDestinationUNLOCOCodeObject(destinationUnlocoCodes[0])\r\n setDidSetDestinationUnlocoCode(true)\r\n }\r\n }, [destinationUnlocoCodes])\r\n\r\n useEffect(() => {\r\n if (loadPorts.length > 0 && !didSetLoadPort) {\r\n setLoadPortUNLOCOCodeObject(loadPorts[0])\r\n setDidSetLoadPortUnlocoCode(true)\r\n }\r\n }, [loadPorts])\r\n\r\n useEffect(() => {\r\n if (dischargePorts.length > 0 && !didSetDischargePort) {\r\n setDischargePortUNLOCOCodeObject(dischargePorts[0])\r\n setDidSetDischargePortUnlocoCode(true)\r\n }\r\n }, [dischargePorts])\r\n\r\n const contactsAreEqual = () => {\r\n const consignor = getValues('consignor')\r\n const consignee = getValues('consignee')\r\n if (consignor !== undefined && consignee !== undefined) {\r\n if (\r\n consignor.addressLine1 === consignee.addressLine1 &&\r\n consignor.city === consignee.city &&\r\n consignor.zipCode === consignee.zipCode &&\r\n consignor.state === consignee.state &&\r\n consignor.countryCode === consignee.countryCode\r\n ) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n const orderIdKey = () => {\r\n return key + '.orderId'\r\n }\r\n\r\n const loadOrderData = async data => {\r\n if (data.originUNLOCOCode !== null) {\r\n await searchUNLOCO(data.originUNLOCOCode, 'origin', false)\r\n }\r\n\r\n if (data.destinationUNLOCOCode !== null) {\r\n await searchUNLOCO(data.destinationUNLOCOCode, 'destination', false)\r\n }\r\n\r\n if (data.loadPort !== null) {\r\n await searchUNLOCO(data.loadPort, 'load', false)\r\n }\r\n\r\n if (data.dischargePort !== null) {\r\n await searchUNLOCO(data.dischargePort, 'discharge', false)\r\n }\r\n\r\n setOrganizationId(data.organizationId)\r\n setValue('clientId', data.clientId)\r\n setCurrentClient(clients.find(c => c.id === data.clientId))\r\n setValue('orderNumber', data.orderNumber)\r\n setValue('transportModeCode', data.transportModeCode)\r\n setValue('incoTermsCode', data.incoTermsCode)\r\n // setValue('containerTypeCode', data.containerTypeCode)\r\n setValue('serviceLevelCode', data.serviceLevelCode)\r\n setValue('currencyCode', data.currencyCode)\r\n setValue('goodsDescription', data.goodsDescription)\r\n setValue(\r\n 'orderDate',\r\n data.orderDate === '0001-01-01T00:00:00' ? null : data.orderDate\r\n )\r\n setValue(\r\n 'exWorksRequiredBy',\r\n data.exWorksRequiredBy === '0001-01-01T00:00:00'\r\n ? null\r\n : data.exWorksRequiredBy\r\n )\r\n setValue(\r\n 'deliveryRequiredBy',\r\n data.deliveryRequiredBy === '0001-01-01T00:00:00'\r\n ? null\r\n : data.deliveryRequiredBy\r\n )\r\n setValue(\r\n 'estimatedDeparture',\r\n data.estimatedDeparture === '0001-01-01T00:00:00'\r\n ? null\r\n : data.estimatedDeparture\r\n )\r\n setValue(\r\n 'estimatedArrival',\r\n data.estimatedArrival === '0001-01-01T00:00:00'\r\n ? null\r\n : data.estimatedArrival\r\n )\r\n setValue(\r\n 'estimatedDelivery',\r\n data.estimatedDelivery === '0001-01-01T00:00:00'\r\n ? null\r\n : data.estimatedDelivery\r\n )\r\n setValue(\r\n 'estimatedExFactory',\r\n data.estimatedExFactory === '0001-01-01T00:00:00'\r\n ? null\r\n : data.estimatedExFactory\r\n )\r\n setValue(\r\n 'estimatedOriginReceipt',\r\n data.estimatedOriginReceipt === '0001-01-01T00:00:00'\r\n ? null\r\n : data.estimatedOriginReceipt\r\n )\r\n\r\n const consignors = data.contacts.filter(c => c.addressType === 'PIC')\r\n if (consignors.length > 0) {\r\n setValue('consignor', consignors[0])\r\n }\r\n\r\n const consignees = data.contacts.filter(c => c.addressType === 'DLV')\r\n if (consignees.length > 0) {\r\n setValue('consignee', consignees[0])\r\n }\r\n }\r\n\r\n const loadOrder = async orderId => {\r\n getCreatedOrder(orderId, async data => {\r\n setDidLoadOrder(true)\r\n loadOrderData(data)\r\n })\r\n }\r\n\r\n const loadTemplate = async orderId => {\r\n getCreateOrderTemplate(orderId, async data => {\r\n setDidLoadOrder(true)\r\n loadOrderData(data)\r\n sessionStorage.setItem(orderIdKey(), data.id)\r\n // need to clear the order number\r\n setValue('orderNumber', '')\r\n })\r\n }\r\n\r\n const handleSetIsConsignor = (event, newValue) => {\r\n const clientId = getValues('clientId')\r\n if (clientId) {\r\n const client = clients.find(c => c.id === clientId)\r\n if (client) {\r\n setClientAddresses(client, newValue)\r\n }\r\n }\r\n searchAddresses('', newValue, true)\r\n setIsConsignor(newValue)\r\n }\r\n\r\n const setDataTypes = data => {\r\n const values1 = data.filter(\r\n item => item.propertyType === 'TRANSPORT_MODE'\r\n )\r\n if (values1.length > 0) {\r\n setTransportModes(values1.filter(item => item.isAvailable === true))\r\n const defaultTransportMode = values1.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultTransportMode.length > 0) {\r\n setValue(\r\n 'transportModeCode',\r\n defaultTransportMode[0].propertyKey\r\n )\r\n }\r\n }\r\n\r\n const values2 = data.filter(item => item.propertyType === 'INCO_TERMS')\r\n if (values2.length > 0) {\r\n setIncoTerms(values2.filter(item => item.isAvailable === true))\r\n const defaultIncoTerm = values2.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultIncoTerm.length > 0) {\r\n setValue('incoTermsCode', defaultIncoTerm[0].propertyKey)\r\n }\r\n }\r\n\r\n const values4 = data.filter(\r\n item => item.propertyType === 'CONTAINER_TYPE_MODE'\r\n )\r\n if (values4.length > 0) {\r\n setContainerModes(values4.filter(item => item.isAvailable === true))\r\n const defaultContainerMode = values4.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultContainerMode.length > 0) {\r\n setValue(\r\n 'containerTypeMode',\r\n defaultContainerMode[0].propertyKey\r\n )\r\n }\r\n }\r\n\r\n const values5 = data.filter(\r\n item => item.propertyType === 'SERVICE_LEVEL'\r\n )\r\n if (values5.length > 0) {\r\n setServiceLevels(values5.filter(item => item.isAvailable === true))\r\n const defaultServiceLevel = values5.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultServiceLevel.length > 0) {\r\n setValue('serviceLevelCode', defaultServiceLevel[0].propertyKey)\r\n }\r\n }\r\n\r\n const values6 = data.filter(\r\n item => item.propertyType === 'CURRENCY_CODE'\r\n )\r\n if (values6.length > 0) {\r\n const currencyCodesArray = values6.filter(\r\n item => item.isAvailable === true\r\n )\r\n setCurrencyCodes(currencyCodesArray)\r\n const defaultCurrencyCode = values6.filter(\r\n item => item.isDefault === true\r\n )\r\n if (defaultCurrencyCode.length > 0) {\r\n setValue('currencyCode', defaultCurrencyCode[0].propertyKey)\r\n }\r\n }\r\n }\r\n\r\n const prepareData = data => {\r\n const newData = _.clone(_.omitBy(data, _.isNil))\r\n newData['originUNLOCOCode'] = originUNLOCOCodeObject?.unloco\r\n newData['destinationUNLOCOCode'] = destinationUNLOCOCodeObject?.unloco\r\n newData['loadPort'] = loadPortObject?.unloco\r\n newData['dischargePort'] = dischargePortObject?.unloco\r\n newData['piecesCount'] = parseFloat(data.piecesCount)\r\n newData['weight'] = parseFloat(data.weight)\r\n newData['volume'] = parseFloat(data.volume)\r\n newData['organizationId'] = organizationId\r\n\r\n const newConsignor = _.clone(data.consignor)\r\n newConsignor['addressType'] = 'PIC'\r\n\r\n const newConsignee = _.clone(data.consignee)\r\n newConsignee['addressType'] = 'DLV'\r\n\r\n newData['contacts'] = [newConsignor, newConsignee]\r\n return newData\r\n }\r\n\r\n const handleFormSubmit = data => {\r\n if (contactsAreEqual()) {\r\n setOrderAlert({\r\n open: true,\r\n success: false,\r\n message: 'Consignor and consignee addresses are the same.'\r\n })\r\n } else {\r\n const preparedData = prepareData(data)\r\n const orderId = getOrderKey()\r\n if (orderId) {\r\n preparedData['id'] = orderId\r\n }\r\n saveOrderData(preparedData)\r\n }\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setOrderAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleCloseOrderAlert = () => {\r\n setOrderAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleConsignorAddressModalClose = () => {\r\n setConsignorAddressesModalOpen(false)\r\n setFilteredOrgConsignorAddresses(orgConsignorAddresses)\r\n }\r\n\r\n const handleConsigneeAddressModalClose = () => {\r\n setConsigneeAddressesModalOpen(false)\r\n setFilteredOrgConsigneeAddresses(orgConsigneeAddresses)\r\n }\r\n\r\n const handleConsignorModalOpen = () => {\r\n searchAddresses('', isConsignor, false, true).then(\r\n ([searchedAddresses]) => {\r\n setOrgConsignorAddresses(searchedAddresses)\r\n setFilteredOrgConsignorAddresses(searchedAddresses)\r\n setConsignorAddressesModalOpen(true)\r\n }\r\n )\r\n }\r\n\r\n const handleConsigneeModalOpen = () => {\r\n searchAddresses('', isConsignor, false, false).then(\r\n ([searchedAddresses]) => {\r\n setOrgConsigneeAddresses(searchedAddresses)\r\n setFilteredOrgConsigneeAddresses(searchedAddresses)\r\n setConsigneeAddressesModalOpen(true)\r\n }\r\n )\r\n }\r\n\r\n const updateAddressInfoFromSelection = (data, sourceParty) => {\r\n if (data === null) {\r\n return\r\n }\r\n\r\n setValue(`${sourceParty}.name`, data.name)\r\n setValue(`${sourceParty}.portCode`, data.portCode)\r\n setValue(`${sourceParty}.addressLine1`, data.addressLine1)\r\n setValue(`${sourceParty}.city`, data.city)\r\n setValue(`${sourceParty}.state`, data.state)\r\n setValue(`${sourceParty}.countryCode`, data.countryCode)\r\n setValue(`${sourceParty}.zipCode`, data.zipCode)\r\n setValue(`${sourceParty}.clientBuyerSupplierCode`, data.orgCode)\r\n }\r\n\r\n const updateAddressInfo = data => {\r\n if (data === null) {\r\n return\r\n }\r\n\r\n const key = !isConsignor ? 'consignor' : 'consignee'\r\n\r\n setValue(`${key}.name`, data.name)\r\n setValue(`${key}.portCode`, data.portCode)\r\n setValue(`${key}.addressLine1`, data.addressLine1)\r\n setValue(`${key}.city`, data.city)\r\n setValue(`${key}.state`, data.state)\r\n setValue(`${key}.countryCode`, data.countryCode)\r\n setValue(`${key}.zipCode`, data.zipCode)\r\n setValue(`${key}.clientBuyerSupplierCode`, data.orgCode)\r\n setselectedAddressForeignKey(data.psaClientBuyerSupplierFK)\r\n }\r\n\r\n const renderOrderAlert = () => {\r\n return orderAlert.open ? (\r\n
\r\n handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n const renderTemplateDialogAlert = () => {\r\n return templateDialogAlert.open ? (\r\n setTemplateDialogAlert({ open: false })}\r\n severity={templateDialogAlert.success ? 'success' : 'error'}\r\n >\r\n {templateDialogAlert.message}\r\n \r\n ) : null\r\n }\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setOrganization(data)\r\n if (orgViewCode === 916) setOrderNumberLabel('Customer PO #')\r\n setcolorThemePrimaryRGB(data.colorThemePrimaryRGB)\r\n setcolorThemeSecondaryRGB(data.colorThemeSecondaryRGB)\r\n setcolorThemeTertiaryRGB(data.colorThemeTertiaryRGB)\r\n setcolorThemeRGB(data.colorThemeRGB)\r\n setcolorThemeTextRGB(data.colorThemeTextRGB)\r\n\r\n setHasAccess(await canCreateOrder(data))\r\n }\r\n }\r\n\r\n const renderInput = (\r\n label,\r\n name,\r\n required = true,\r\n inputProps = {},\r\n customKey = null,\r\n customSubKey = null,\r\n fieldPattern = null\r\n ) => {\r\n return (\r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n {customKey !== undefined &&\r\n customSubKey !== undefined &&\r\n customKey !== null &&\r\n customSubKey !== null &&\r\n errors[customKey] &&\r\n errors[customKey][customSubKey] && (\r\n

\r\n {errors[customKey][customSubKey].message}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n const setClientAddresses = (client, isConsignor) => {\r\n const setKey = isConsignor ? 'consignor' : 'consignee'\r\n const clearKey = isConsignor ? 'consignee' : 'consignor'\r\n\r\n setValue(`${setKey}.name`, client.name)\r\n setValue(`${setKey}.addressLine1`, client.contactAddressLine1)\r\n setValue(`${setKey}.city`, client.contactAddressCity)\r\n setValue(`${setKey}.state`, client.contactAddressRegion)\r\n setValue(`${setKey}.countryCode`, client.contactAddressCountryCode)\r\n setValue(`${setKey}.zipCode`, client.contactAddressZipCode)\r\n setValue(\r\n `${setKey}.clientBuyerSupplierCode`,\r\n client.integrationCompanyCode\r\n )\r\n\r\n setValue(`${clearKey}.name`, '')\r\n setValue(`${clearKey}.addressLine1`, '')\r\n setValue(`${clearKey}.city`, '')\r\n setValue(`${clearKey}.state`, '')\r\n setValue(`${clearKey}.countryCode`, '')\r\n setValue(`${clearKey}.zipCode`, '')\r\n setValue(`${clearKey}.clientBuyerSupplierCode`, '')\r\n }\r\n\r\n const loadOrderFromTemplate = async template => {\r\n setTemplateLoading(true)\r\n loadTemplate(template.id).then(() => {\r\n setTemplateDialogAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order template loaded successfully.'\r\n })\r\n setTemplateLoading(false)\r\n })\r\n }\r\n\r\n const handleSelectChange = (e, name) => {\r\n if (name === 'clientId') {\r\n const client = clients.find(c => c.id === e.target.value)\r\n setClientAddresses(client, isConsignor)\r\n // clear consignee address\r\n setAddresses([])\r\n setFilteredAddresses([])\r\n setOrgConsigneeAddresses([])\r\n setFilteredOrgConsigneeAddresses([])\r\n setOrgConsignorAddresses([])\r\n setFilteredOrgConsignorAddresses([])\r\n searchAddresses('', isConsignor, true).then(\r\n ([searchedAddresses]) => {\r\n // something\r\n }\r\n )\r\n setCurrentClient(client)\r\n }\r\n }\r\n\r\n const renderSelect = (\r\n label,\r\n name,\r\n data,\r\n keyValue = 'key',\r\n valueKey = 'value',\r\n showKeyInValue = false,\r\n required = true\r\n ) => {\r\n return (\r\n \r\n {label}\r\n (\r\n {\r\n onChange(e)\r\n handleSelectChange(e, name)\r\n }}\r\n value={value ? value : ''}\r\n name={name}\r\n input={}\r\n >\r\n {data.map(option => (\r\n \r\n {showKeyInValue\r\n ? `${option[keyValue]} - ${option[valueKey]}`\r\n : option[valueKey]}\r\n \r\n ))}\r\n \r\n )}\r\n />\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const renderTitle = (title, width = 12) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const renderAutocomplete = (\r\n data,\r\n value,\r\n label,\r\n labelRender = () => {},\r\n selectChangeCallback = () => {},\r\n textChangeCallback = () => {}\r\n ) => {\r\n return (\r\n {\r\n return option.unloco === value.unloco\r\n }}\r\n onChange={selectChangeCallback}\r\n getOptionLabel={labelRender}\r\n options={data}\r\n loading={false}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n )\r\n }\r\n\r\n const handleDeleteTemplateClick = async template => {\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to delete this order template?'\r\n )\r\n ) {\r\n return\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/createOrders/DeleteOrderTemplate?orderId=' + template.id,\r\n {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n getOrderTemplates()\r\n setTemplateDialogAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order template deleted successfully.'\r\n })\r\n } else {\r\n setTemplateDialogAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while deleting this order template.'\r\n })\r\n }\r\n }\r\n\r\n const renderUnitSection = (key, selectKey, data) => {\r\n const cKey = voca.capitalize(key)\r\n return (\r\n
\r\n \r\n \r\n
{renderInput(cKey, key)}
\r\n
\r\n \r\n
\r\n {renderSelect(\r\n `${cKey} Unit`,\r\n selectKey,\r\n data,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n const handleTemplateModalClose = () => {\r\n setTemplateModalOpen(false)\r\n setTemplateDialogAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleTemplateModalOpen = () => {\r\n setTemplateModalOpen(true)\r\n }\r\n\r\n const getOrderTemplates = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/createOrders/GetCreateOrderTemplates',\r\n {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n setTemplates(data)\r\n setFilteredTemplates(data)\r\n }\r\n }\r\n\r\n const templateSearchOnChange = e => {\r\n const value = e.target.value.toLowerCase()\r\n setFilteredTemplates(\r\n templates.filter(template => {\r\n return template.templateName.toLowerCase().indexOf(value) !== -1\r\n })\r\n )\r\n }\r\n\r\n const getClients = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=createorder',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n setClients(data)\r\n if (data.length > 0) {\r\n if (!getValues('clientId')) {\r\n setValue('clientId', data[0].id)\r\n setCurrentClient(data[0])\r\n const setKey = isConsignor ? 'consignor' : 'consignee'\r\n\r\n setValue(`${setKey}.name`, data[0].name)\r\n setValue(\r\n `${setKey}.addressLine1`,\r\n data[0].contactAddressLine1\r\n )\r\n setValue(`${setKey}.city`, data[0].contactAddressCity)\r\n setValue(`${setKey}.state`, data[0].contactAddressRegion)\r\n setValue(\r\n `${setKey}.countryCode`,\r\n data[0].contactAddressCountryCode\r\n )\r\n setValue(`${setKey}.zipCode`, data[0].contactAddressZipCode)\r\n setValue(\r\n `${setKey}.clientBuyerSupplierCode`,\r\n data[0].integrationCompanyCode\r\n )\r\n\r\n setAddresses([])\r\n setFilteredAddresses([])\r\n searchAddresses('', isConsignor, true)\r\n }\r\n setOrganizationId(data[0].psaOrganizationId)\r\n }\r\n }\r\n }\r\n\r\n const getTypesData = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDataTypes(data)\r\n }\r\n }\r\n\r\n const searchUNLOCO = async (query, portType, isName = true) => {\r\n getUNLOCO(query, isName, async data => {\r\n if (portType === 'origin') {\r\n setOriginUnlocoCodes(data)\r\n } else if (portType === 'destination') {\r\n setDestinationUnlocoCodes(data)\r\n } else if (portType === 'load') {\r\n setLoadUnlocoCodes(data)\r\n } else if (portType === 'discharge') {\r\n setDischargeUnlocoCodes(data)\r\n }\r\n })\r\n }\r\n\r\n const searchAddresses = async (\r\n query,\r\n isShipper,\r\n isPrimary,\r\n fromShipper\r\n ) => {\r\n const token = await authService.getAccessToken()\r\n const clientId = getValues('clientId')\r\n\r\n if (!clientId) {\r\n return\r\n }\r\n\r\n let selectedPartyForeignKey = selectedAddressForeignKey\r\n\r\n if ((isShipper && fromShipper) || (!isShipper && !fromShipper)) {\r\n selectedPartyForeignKey = currentClient?.sourcePK\r\n }\r\n\r\n const response = await fetch(\r\n `api/DataManagement/GetClientOrgAddresses?clientId=${clientId}${\r\n isShipper ? '&IsSearchingShipper=true' : ''\r\n }&SearchQuery=${query}&IsPrimary=${isPrimary}&CW1OrgPK=${\r\n selectedPartyForeignKey ? selectedPartyForeignKey : ''\r\n }`,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n if (isPrimary) {\r\n setAddresses(data)\r\n setFilteredAddresses(data)\r\n }\r\n return [data]\r\n }\r\n }\r\n\r\n const addressSearchOnChange = e => {\r\n const value = e.target.value.toLowerCase()\r\n setAddressSearchValue(value)\r\n }\r\n\r\n useEffect(() => {\r\n addressSearchFilterList()\r\n }, [addressSearchValue])\r\n\r\n const addressSearchFilterList = () => {\r\n const filteredAddresses = addresses.filter(address => {\r\n return (\r\n address.orgCode.toLowerCase().indexOf(addressSearchValue) !==\r\n -1 ||\r\n address.name.toLowerCase().indexOf(addressSearchValue) !== -1\r\n )\r\n })\r\n setFilteredAddresses(filteredAddresses)\r\n }\r\n\r\n const saveOrderData = async data => {\r\n const token = await authService.getAccessToken()\r\n await fetch('api/createOrders/PutCreateOrder?sourceForm=orderDetails', {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(async response => {\r\n let results = null\r\n if (response.ok) {\r\n const newData = await response.json()\r\n\r\n setOrderAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order information is saved. Redirecting...'\r\n })\r\n\r\n sessionStorage.setItem(orderIdKey(), newData.id)\r\n\r\n setTimeout(() => {\r\n window.location.href = '/orders/create/notes'\r\n }, 3000)\r\n } else {\r\n setOrderAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n setOrderAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this order information.'\r\n })\r\n })\r\n }\r\n\r\n const renderDatePicker = (name, label, organization, required) => {\r\n return (\r\n
\r\n \r\n {\r\n setValue(name, value + 'T00:00:00')\r\n }}\r\n />\r\n }\r\n />\r\n \r\n\r\n {errors[name] && (\r\n

\r\n {errors[name].message}\r\n

\r\n )}\r\n
\r\n )\r\n }\r\n\r\n const handleModalOpen = () => {\r\n setModalOpen(true)\r\n }\r\n\r\n const handleModalClose = () => {\r\n setModalOpen(false)\r\n setAddressSearchValue('')\r\n setFilteredAddresses(addresses)\r\n }\r\n\r\n const handleACCChange = panel => event => {\r\n // check if panel exists in expanded array, it not add, otherwise remove\r\n const newPanels = [...expandedPanels]\r\n const index = expandedPanels.indexOf(panel)\r\n if (index === -1) {\r\n newPanels.push(panel)\r\n } else {\r\n newPanels.splice(index, 1)\r\n }\r\n setExpandedPanels(newPanels)\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\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'New Order Options'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n handleTemplateModalOpen()\r\n }}\r\n style={{\r\n background:\r\n colorThemePrimaryRGB,\r\n border: colorThemePrimaryRGB,\r\n color: colorThemeTextRGB\r\n }}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n >\r\n {templateLoading\r\n ? 'Loading...'\r\n : 'Load from Template'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'Client'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderSelect(\r\n 'Client',\r\n 'clientId',\r\n clients,\r\n 'id',\r\n 'name'\r\n )}\r\n
\r\n \r\n \r\n \r\n Consignor\r\n \r\n \r\n Consignee\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {renderTitle(\r\n 'Consignor'\r\n )}\r\n \r\n \r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n !isConsignor ? (\r\n {\r\n handleModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Consignor\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n label=\"\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n 'Consignor Code',\r\n 'consignor.clientBuyerSupplierCode',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'clientBuyerSupplierCode'\r\n )}\r\n
\r\n \r\n {renderInput(\r\n 'Consignor Name',\r\n 'consignor.name',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'name'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Address',\r\n 'consignor.addressLine1',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'addressLine1'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'City',\r\n 'consignor.city',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'city'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'State',\r\n 'consignor.state',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Postal Code',\r\n 'consignor.zipCode',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Country (2 Characters)',\r\n 'consignor.countryCode',\r\n true,\r\n {\r\n maxLength: 2,\r\n readOnly: true\r\n },\r\n 'consignor',\r\n 'countryCode'\r\n )}\r\n \r\n \r\n \r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n {\r\n setFilteredOrgConsignorAddresses(\r\n orgConsignorAddresses\r\n )\r\n handleConsignorModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Address\r\n \r\n }\r\n label=\"\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Consignee'\r\n )}\r\n \r\n \r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n isConsignor ? (\r\n {\r\n handleModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Consignee\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n label=\"\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n 'Consignee Code',\r\n 'consignee.clientBuyerSupplierCode',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'clientBuyerSupplierCode'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Consignee Name',\r\n 'consignee.name',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'name'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Address',\r\n 'consignee.addressLine1',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'addressLine1'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'City',\r\n 'consignee.city',\r\n true,\r\n {\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'city'\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'State',\r\n 'consignee.state',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Postal Code',\r\n 'consignee.zipCode',\r\n false,\r\n {\r\n readOnly: true\r\n }\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Country (2 Characters)',\r\n 'consignee.countryCode',\r\n true,\r\n {\r\n maxLength: 2,\r\n readOnly: true\r\n },\r\n 'consignee',\r\n 'countryCode'\r\n )}\r\n \r\n \r\n \r\n \r\n event.stopPropagation()\r\n }\r\n onFocus={event =>\r\n event.stopPropagation()\r\n }\r\n control={\r\n {\r\n setFilteredOrgConsigneeAddresses(\r\n orgConsigneeAddresses\r\n )\r\n handleConsigneeModalOpen()\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n Select\r\n Address\r\n \r\n }\r\n label=\"\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Details'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderInput(\r\n orderNumberLabel,\r\n 'orderNumber',\r\n true,\r\n {},\r\n null,\r\n null,\r\n /^[a-zA-Z0-9]*$/\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Transport Mode',\r\n 'transportModeCode',\r\n transportModes,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n {/* \r\n {renderSelect(\r\n 'Container Mode',\r\n 'containerTypeCode',\r\n filteredContainerModes,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n */}\r\n \r\n {renderSelect(\r\n 'Inco Terms',\r\n 'incoTermsCode',\r\n incoTerms,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n \r\n {renderSelect(\r\n 'Service Level',\r\n 'serviceLevelCode',\r\n serviceLevels,\r\n 'propertyKey',\r\n 'value',\r\n true\r\n )}\r\n \r\n {orgViewCode ===\r\n 916 ? (\r\n \r\n {renderSelect(\r\n 'Currency',\r\n 'currencyCode',\r\n currencyCodes,\r\n 'propertyKey',\r\n 'value',\r\n true,\r\n true\r\n )}\r\n \r\n ) : null}\r\n \r\n {renderInput(\r\n 'Goods Description',\r\n 'goodsDescription'\r\n )}\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n originUnlocoCodes,\r\n originUNLOCOCodeObject,\r\n 'Origin',\r\n option =>\r\n `${option.unloco} - ${option.portName}`,\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setOriginUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n 'origin',\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n destinationUnlocoCodes,\r\n destinationUNLOCOCodeObject,\r\n 'Destination',\r\n option =>\r\n `${option.unloco} - ${option.portName}`,\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setDestinationUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n 'destination',\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n loadPorts,\r\n loadPortObject,\r\n 'Load Port',\r\n option =>\r\n `${option.unloco} - ${option.portName}`,\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setLoadPortUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n 'load',\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n {renderAutocomplete(\r\n dischargePorts,\r\n dischargePortObject,\r\n 'Discharge Port',\r\n option =>\r\n `${option.unloco} - ${option.portName}`,\r\n (\r\n e,\r\n value\r\n ) => {\r\n if (\r\n value !==\r\n null\r\n ) {\r\n setDischargePortUNLOCOCodeObject(\r\n value\r\n )\r\n }\r\n },\r\n e => {\r\n const value =\r\n e\r\n .target\r\n .value\r\n searchUNLOCO(\r\n value,\r\n 'discharge',\r\n true\r\n )\r\n }\r\n )}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {' '}\r\n \r\n {' '}\r\n {renderTitle(\r\n 'Dates'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {orgViewCode ===\r\n 916 ? null : (\r\n \r\n {renderDatePicker(\r\n 'orderDate',\r\n 'Order Date',\r\n organization,\r\n true\r\n )}\r\n \r\n )}\r\n \r\n {renderDatePicker(\r\n 'exWorksRequiredBy',\r\n 'Ex Works Required By',\r\n organization\r\n )}\r\n \r\n \r\n {renderDatePicker(\r\n 'deliveryRequiredBy',\r\n 'Delivery Required By',\r\n organization\r\n )}\r\n \r\n {orgViewCode ===\r\n 916 ? null : (\r\n \r\n {renderDatePicker(\r\n 'estimatedExFactory',\r\n 'Estimated Ex Factory',\r\n organization\r\n )}\r\n \r\n )}\r\n \r\n {renderDatePicker(\r\n 'estimatedOriginReceipt',\r\n 'Estimated Origin Receipt',\r\n organization\r\n )}\r\n \r\n \r\n {renderDatePicker(\r\n 'estimatedDeparture',\r\n 'Estimated Departure',\r\n organization\r\n )}\r\n \r\n {orgViewCode ===\r\n 916 ? null : (\r\n \r\n {renderDatePicker(\r\n 'estimatedArrival',\r\n 'Estimated Arrival',\r\n organization\r\n )}\r\n \r\n )}\r\n \r\n {renderDatePicker(\r\n 'estimatedDelivery',\r\n 'Estimated Delivery',\r\n organization\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {renderOrderAlert()}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Save/Next\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isConsignor ? 'Select Consignee' : 'Select Consignor'}\r\n \r\n {\r\n addressSearchOnChange(e)\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n addresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredAddresses.map((address, i) => (\r\n {\r\n updateAddressInfo(address)\r\n setModalOpen(false)\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n Select Template\r\n \r\n {renderTemplateDialogAlert()}\r\n {\r\n // do something\r\n templateSearchOnChange(e)\r\n }}\r\n placeholder={'Enter template name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n templates.length === 0 && (\r\n
\r\n

No templates found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredTemplates.map((template, i) => (\r\n {\r\n loadOrderFromTemplate(template)\r\n }}\r\n >\r\n \r\n \r\n {\r\n handleDeleteTemplateClick(template)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n Select Address\r\n \r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredConsigneeAddresses =\r\n orgConsigneeAddresses.filter(address => {\r\n return (\r\n address.orgCode\r\n .toLowerCase()\r\n .includes(value.toLowerCase()) ||\r\n address.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n setFilteredOrgConsigneeAddresses(\r\n filteredConsigneeAddresses\r\n )\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n orgConsigneeAddresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredOrgConsigneeAddresses.map((address, i) => (\r\n {\r\n updateAddressInfoFromSelection(\r\n address,\r\n 'consignee'\r\n )\r\n setConsigneeAddressesModalOpen(false)\r\n }}\r\n // set bold if isprimary = true\r\n style={{\r\n fontWeight: address.isPrimary\r\n ? 'bold'\r\n : 'normal'\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n Select Address\r\n \r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredConsignorAddresses =\r\n orgConsignorAddresses.filter(address => {\r\n return (\r\n address.orgCode\r\n .toLowerCase()\r\n .includes(value.toLowerCase()) ||\r\n address.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n setFilteredOrgConsignorAddresses(\r\n filteredConsignorAddresses\r\n )\r\n }}\r\n placeholder={'Enter org code or name..'}\r\n />\r\n \r\n <>\r\n {\r\n // if addresses is empty then display 'no results'\r\n orgConsignorAddresses.length === 0 && (\r\n
\r\n

No records found!

\r\n
\r\n )\r\n }\r\n \r\n {filteredOrgConsignorAddresses.map((address, i) => (\r\n {\r\n updateAddressInfoFromSelection(\r\n address,\r\n 'consignor'\r\n )\r\n setConsignorAddressesModalOpen(false)\r\n }}\r\n // set bold if isprimary = true\r\n style={{\r\n fontWeight: address.isPrimary\r\n ? 'bold'\r\n : 'normal'\r\n }}\r\n key={`${i}_${address.orgCode}`}\r\n >\r\n {`${address.orgCode} | ${address.name} | ${\r\n address.city +\r\n ', ' +\r\n address.addressLine1.substring(0, 15) +\r\n '...'\r\n } `}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport CreateOrderForm from './CreateOrderForm'\r\nimport { canCreateOrder } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function CreateOrder() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setLoadingShow] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setLoadingShow(true)\r\n const data = await response.json()\r\n setShow(await canCreateOrder(data))\r\n setLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Create Order' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Grid, CardContent, Select, FormControl } from '@material-ui/core'\r\nimport { Table, TableContainer, TableBody } from '@material-ui/core'\r\nimport { TableRow, TableCell, TableHead, InputLabel } from '@material-ui/core'\r\nimport {\r\n TextField,\r\n IconButton,\r\n Button,\r\n Input,\r\n MenuItem\r\n} from '@material-ui/core'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport AlertMessage from '../shared/Alert'\r\nimport _ from 'lodash'\r\nimport { getDataMapping, setDataMapping } from '../../utils/data-mapping'\r\nimport { getCreatedOrder } from '../../api/api'\r\n\r\nconst classes = makeStyles(theme => ({\r\n table: {\r\n minWidth: 650\r\n }\r\n}))\r\n\r\nconst emptyRow = {\r\n foo: ''\r\n}\r\n\r\nexport default function CreateOrderTable(props) {\r\n const [order, setOrder] = useState([])\r\n const [key, setKey] = useState(['order.create'])\r\n const [commodities, setCommodities] = useState([])\r\n const [weightUnits, setWeightUnits] = useState([])\r\n const [lengthUnits, setLengthUnits] = useState([])\r\n const [pieceUnits, setPieceUnits] = useState([])\r\n const [noteUnits, setNoteUnits] = useState([])\r\n const [containerModes, setContainerModes] = useState([])\r\n\r\n const state = {\r\n commodities,\r\n weightUnits,\r\n lengthUnits,\r\n noteUnits,\r\n containerModes,\r\n pieceUnits\r\n }\r\n\r\n const [rows, setRows] = useState([])\r\n const [alert, setAlert] = useState([\r\n {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n ])\r\n\r\n useEffect(() => {\r\n const dataTypes = getDataMapping()\r\n dataTypes !== null ? setDataTypes(dataTypes) : getTypesData()\r\n\r\n const orderId = sessionStorage.getItem(orderIdKey())\r\n if (orderId !== null && orderId !== undefined) {\r\n getCreatedOrder(orderId, data => {\r\n setOrder(data)\r\n setRows(data[props.orderKey])\r\n })\r\n } else {\r\n window.location.replace('/orders/create')\r\n }\r\n }, [])\r\n\r\n const updateOrderField = values => {\r\n setOrder({ ...order, ...values })\r\n }\r\n\r\n const orderIdKey = () => {\r\n return key + '.orderId'\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleChange = (e, idx, name) => {\r\n const { value } = e.target\r\n updateValueInRow(idx, name, value)\r\n }\r\n\r\n const updateValueInRow = (idx, key, value) => {\r\n setRows(\r\n rows.map((item, index) =>\r\n index === idx ? { ...item, [key]: value } : item\r\n )\r\n )\r\n }\r\n\r\n const handleAddRow = () => {\r\n setRows([...rows, emptyRow])\r\n }\r\n\r\n const setDataTypes = data => {\r\n const values1 = data.filter(item => item.propertyType === 'COMMODITY')\r\n if (values1.length > 0) {\r\n setCommodities(values1.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values2 = data.filter(item => item.propertyType === 'WEIGHT_UOM')\r\n if (values2.length > 0) {\r\n setWeightUnits(values2.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values3 = data.filter(item => item.propertyType === 'LENGTH_UOM')\r\n if (values3.length > 0) {\r\n setLengthUnits(values3.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values4 = data.filter(\r\n item => item.propertyType === 'CONTAINER_MODE'\r\n )\r\n if (values4.length > 0) {\r\n setContainerModes(values4.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values5 = data.filter(item => item.propertyType === 'NOTE_TYPE')\r\n if (values5.length > 0) {\r\n setNoteUnits(values5.filter(item => item.isAvailable === true))\r\n }\r\n\r\n const values6 = data.filter(item => item.propertyType === 'PIECES_UOM')\r\n if (values6.length > 0) {\r\n setPieceUnits(values6.filter(item => item.isAvailable === true))\r\n }\r\n }\r\n\r\n const handleRemoveSpecificRow = idx => () => {\r\n setRows(rows.filter((r, index) => index !== idx))\r\n }\r\n\r\n const renderInputCell = (index, key) => {\r\n return (\r\n \r\n handleChange(e, index, key)}\r\n className=\"form-control\"\r\n />\r\n \r\n )\r\n }\r\n\r\n const renderSelectCell = (\r\n idx,\r\n key,\r\n label,\r\n data,\r\n keyValue = 'propertyKey',\r\n valueKey = 'value'\r\n ) => {\r\n return (\r\n \r\n \r\n {\r\n updateValueInRow(idx, key, e.target.value)\r\n }}\r\n value={rows[idx][key]}\r\n input={}\r\n >\r\n {state[data].map(option => (\r\n \r\n {key !== 'noteType'\r\n ? `${option[keyValue]} - ${option[valueKey]}`\r\n : option[valueKey]}\r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const getTypesData = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setDataMapping(JSON.stringify(data))\r\n setDataTypes(data)\r\n }\r\n }\r\n\r\n const renderAlert = () => {\r\n return alert.open ? (\r\n
\r\n handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n const handleSubmit = e => {\r\n e.preventDefault()\r\n saveOrderData(_.omitBy(order, _.isNil))\r\n }\r\n\r\n const parseRowData = () => {\r\n const floats = props.columns\r\n .filter(column => column.type === 'number')\r\n .map(column => column.id)\r\n return rows.map(row => {\r\n for (var key in row) {\r\n const keyIn = floats.includes(key)\r\n row[key] = keyIn ? parseFloat(row[key]) : row[key]\r\n }\r\n return row\r\n })\r\n }\r\n\r\n const saveOrderData = async data => {\r\n const token = await authService.getAccessToken()\r\n data[props.orderKey] = parseRowData()\r\n await fetch(\r\n 'api/createOrders/PutCreateOrder?sourceForm=' + props.sourceForm,\r\n {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n }\r\n ).then(response => {\r\n if (response.ok) {\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order information is saved. Redirecting...'\r\n })\r\n\r\n setTimeout(() => {\r\n window.location.replace(props.redirectURL)\r\n }, 3000)\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving order details.'\r\n })\r\n }\r\n })\r\n }\r\n\r\n const renderItem = (item, rowIndex) => {\r\n if (item.type === 'text' || item.type === 'number') {\r\n return renderInputCell(rowIndex, item.id)\r\n } else if (item.type === 'dropdown') {\r\n return renderSelectCell(rowIndex, item.id, item.label, item.dataKey)\r\n }\r\n\r\n return
\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 {props.title || ''}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Line #\r\n \r\n {props.columns.map(\r\n (column, index) => (\r\n \r\n {column.label}\r\n \r\n )\r\n )}\r\n \r\n \r\n \r\n {rows\r\n ? rows.map((item, idx) => (\r\n \r\n \r\n {idx + 1}\r\n \r\n\r\n {props.columns.map(\r\n function (i) {\r\n return renderItem(\r\n i,\r\n 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 : null}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {renderAlert()}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {props.backURL !== null &&\r\n props.backURL !== undefined && (\r\n \r\n window.location.replace(\r\n props.backURL\r\n )\r\n }\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Back\r\n \r\n )}\r\n {props.showSkip && (\r\n \r\n window.location.replace(\r\n props.redirectURL\r\n )\r\n }\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Skip\r\n \r\n )}\r\n \r\n {props.submitButtonText || 'Save/Next'}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport CreateOrderTable from './CreateOrderTable'\r\nimport OrderCreationProgress from './OrderCreationProgress'\r\nimport { redirectUrlForPacklines, getOrderKey } from '../../utils/order'\r\nimport { getCreatedOrder } from '../../api/api'\r\n\r\nconst columns = [\r\n { id: 'partNumber', label: 'Part #', type: 'text' },\r\n { id: 'partDescription', label: 'Part Description', type: 'text' },\r\n { id: 'quantity', label: 'Quantity', type: 'number' },\r\n {\r\n id: 'quantityUOM',\r\n label: 'Quantity UOM',\r\n type: 'dropdown',\r\n dataKey: 'pieceUnits'\r\n },\r\n { id: 'price', label: 'Item Price', type: 'number' },\r\n { id: 'containerNumber', label: 'Container #', type: 'text' }\r\n]\r\n\r\nexport default function CreateOrderLines() {\r\n const [redirectURL, setRedirectURL] = useState()\r\n const [submitText, setSubmitText] = useState('Submit')\r\n const [showSkip, setShowSkip] = useState(false)\r\n const [order, setOrder] = useState({})\r\n\r\n useEffect(() => {\r\n const orderId = getOrderKey()\r\n if (orderId !== null && orderId !== undefined) {\r\n getCreatedOrder(orderId, data => {\r\n setOrder(data)\r\n setRedirectURL(redirectUrlForPacklines())\r\n setSubmitText('Save/Review')\r\n setShowSkip(false)\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","import React, { useEffect, useState } from 'react'\r\nimport CreateOrderTable from './CreateOrderTable'\r\nimport OrderCreationProgress from './OrderCreationProgress'\r\nimport { getOrderKey } from '../../utils/order'\r\nimport { getCreatedOrder } from '../../api/api'\r\n\r\nconst columns = [\r\n {\r\n id: 'noteTypeCode',\r\n label: 'Note Type',\r\n type: 'dropdown',\r\n dataKey: 'noteUnits'\r\n },\r\n { id: 'noteText', label: 'Text', type: 'text' }\r\n]\r\n\r\nexport default function CreateOrderNotes() {\r\n const [order, setOrder] = useState({})\r\n\r\n useEffect(() => {\r\n const orderId = getOrderKey()\r\n if (orderId !== null && orderId !== undefined) {\r\n getCreatedOrder(orderId, data => {\r\n setOrder(data)\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","import React, { useEffect } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './CardTitle'\r\nimport { Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function OrderDetailCard({ item, itemextra, shipmentdetails }) {\r\n const theme = useTheme()\r\n\r\n useEffect(() => {}, [])\r\n\r\n return (\r\n
\r\n
\r\n Order Details\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Weight\r\n \r\n

\r\n {(itemextra !== null &&\r\n ((item.shipmentNumber !== null &&\r\n shipmentdetails?.weight) ||\r\n itemextra.weightAsString)) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n Volume\r\n \r\n

\r\n {(itemextra !== null &&\r\n ((item.shipmentNumber !== null &&\r\n shipmentdetails?.volume) ||\r\n itemextra.volumeAsString)) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n Quantity\r\n \r\n

\r\n {' '}\r\n {(itemextra !== null &&\r\n ((item.shipmentNumber &&\r\n shipmentdetails?.quantity) ||\r\n itemextra.quantity)) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Goods Description\r\n \r\n

\r\n {(itemextra !== null &&\r\n ((item.shipmentNumber &&\r\n shipmentdetails?.goodsDescription) ||\r\n itemextra.goodsDescription)) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport CardTitle from './CardTitle'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport { Typography } from '@material-ui/core'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { getOrgViewCodeFromOrganization } from '../../utils/organizations'\r\n\r\nexport default function CreateOrderDetailsCard({ item, title, organization }) {\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n\r\n const theme = useTheme()\r\n const dateFns = new DateFnsUtils()\r\n\r\n useEffect(() => {\r\n getOrgViewCode()\r\n }, [])\r\n\r\n const getFormattedDate = (date, organization) => {\r\n if (\r\n date === null ||\r\n date === undefined ||\r\n date === '0001-01-01T00:00:00' ||\r\n organization === null ||\r\n organization === undefined\r\n ) {\r\n return '-'\r\n }\r\n let dateFormat = organization?.pickerDateFormat\r\n return dateFns.moment(date).format(dateFormat)\r\n }\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n const showEstimatedArrival = () => {\r\n if (orgViewCode === 916) {\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n const showExFactory = () => {\r\n if (orgViewCode === 916) {\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Order #\r\n \r\n

\r\n {item.orderNumber || '-'}\r\n

\r\n
\r\n \r\n \r\n Order # Split\r\n \r\n

\r\n {item.orderNumberSplit || '-'}\r\n

\r\n
\r\n \r\n \r\n Order Date\r\n \r\n

\r\n {getFormattedDate(item.orderDate, organization)}\r\n

\r\n
\r\n \r\n \r\n Transport Mode\r\n \r\n

\r\n {item.transportModeCode || '-'}\r\n

\r\n
\r\n \r\n \r\n Inco Terms\r\n \r\n

\r\n {item.incoTermsCode || '-'}\r\n

\r\n
\r\n \r\n \r\n Service Level\r\n \r\n

\r\n {item.serviceLevelCode || '-'}\r\n

\r\n
\r\n \r\n \r\n Origin\r\n \r\n

\r\n {item.originUNLOCOCode || '-'}\r\n

\r\n
\r\n \r\n \r\n Destination\r\n \r\n

\r\n {item.destinationUNLOCOCode || '-'}\r\n

\r\n
\r\n \r\n \r\n Load Port\r\n \r\n

\r\n {item.loadPort || '-'}\r\n

\r\n
\r\n \r\n \r\n Discharge Port\r\n \r\n

\r\n {item.dischargePort || '-'}\r\n

\r\n
\r\n \r\n \r\n Ex-Works Required By\r\n \r\n

\r\n {getFormattedDate(\r\n item.exWorksRequiredBy,\r\n organization\r\n )}\r\n

\r\n
\r\n \r\n \r\n Delivery Required By\r\n \r\n

\r\n {getFormattedDate(\r\n item.deliveryRequiredBy,\r\n organization\r\n )}\r\n

\r\n
\r\n {showExFactory() && (\r\n \r\n \r\n Estimated Ex-Factory\r\n \r\n

\r\n {getFormattedDate(\r\n item.estimatedExFactory,\r\n organization\r\n )}\r\n

\r\n
\r\n )}\r\n \r\n \r\n Estimated Origin Receipt\r\n \r\n

\r\n {getFormattedDate(\r\n item.estimatedOriginReceipt,\r\n organization\r\n )}\r\n

\r\n
\r\n \r\n \r\n Estimated Departure\r\n \r\n

\r\n {getFormattedDate(\r\n item.estimatedDeparture,\r\n organization\r\n )}\r\n

\r\n
\r\n {showEstimatedArrival() && (\r\n \r\n \r\n Estimated Arrival\r\n \r\n

\r\n {getFormattedDate(\r\n item.estimatedArrival,\r\n organization\r\n )}\r\n

\r\n
\r\n )}\r\n \r\n \r\n Estimated Delivery\r\n \r\n

\r\n {getFormattedDate(\r\n item.estimatedDelivery,\r\n organization\r\n )}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../shared/TableHelper'\r\nimport CardTitle from '../shared/CardTitle'\r\n\r\nconst notes = [\r\n { key: 'title', label: 'Note Type', icon: false },\r\n { key: 'date', label: 'Date', icon: false },\r\n { key: 'note', label: 'Detail', icon: false }\r\n]\r\n\r\nconst notesReview = [\r\n { key: 'noteTypeCode', label: 'Note Type', icon: false },\r\n { key: 'noteText', label: 'Text', icon: false }\r\n]\r\n\r\nexport default function OrderNotesTable({ item, isReview, classes }) {\r\n return item !== null &&\r\n item !== undefined &&\r\n item.notes !== null &&\r\n item.notes !== undefined ? (\r\n \r\n {renderTable(\r\n item.notes,\r\n isReview ? notesReview : notes,\r\n 'notes',\r\n classes,\r\n () => {},\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n \r\n ) : (\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { renderTable } from '../shared/TableHelper'\r\nimport CardTitle from '../shared/CardTitle'\r\nimport Alert from '@material-ui/lab/Alert'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nconst containers = [\r\n { key: 'partNumber', label: 'Part #' },\r\n { key: 'partDescription', label: 'Part Description' },\r\n { key: 'quantity', label: 'Quantity' },\r\n { key: 'quantityUOM', label: 'Quantity UOM' },\r\n { key: 'price', label: 'Item Price' },\r\n { key: 'containerNumber', label: 'Container #' }\r\n]\r\n\r\nexport default function CreateOrderlinesTable({ item, organization }) {\r\n return (\r\n \r\n {item !== null &&\r\n item !== undefined &&\r\n item.lines !== null &&\r\n item.lines !== undefined ? (\r\n renderTable(\r\n item.lines,\r\n containers,\r\n 'container',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )\r\n ) : (\r\n \r\n No records found.\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport OrderCreationProgress from './OrderCreationProgress'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport {\r\n getOrderKey,\r\n backUrlForReview,\r\n removeOrderKey\r\n} from '../../utils/order'\r\nimport { getCreatedOrder } from '../../api/api'\r\nimport { Grid, Button } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport _, { set } from 'lodash'\r\nimport '../shared/OrderDetailCard'\r\nimport CreateOrderDetailsCard from '../shared/CreateOrderDetailsCard'\r\nimport OrderNotesTable from '../shared/OrderNotesTable'\r\n//import OrderLinesTable from '../shared/OrderLinesTable'\r\nimport CreateOrderLinesTable from '../shared/CreateOrderLinesTable'\r\nimport ShipmentContactCard from '../shared/ShipmentContactCard'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport DialogOk from '../shared/DialogOk'\r\nimport { ApplicationPaths } from '../api-authorization/ApiAuthorizationConstants'\r\nimport { useHistory } from 'react-router-dom'\r\nimport Alert from '@material-ui/lab/Alert'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function CreateOrderReview() {\r\n const [order, setOrder] = useState([])\r\n const [backURL, setBackURL] = useState('')\r\n const [dialogOpen, setDialogOpen] = useState(false)\r\n const [submitSuccess, setSubmitSuccess] = useState(false)\r\n const [createdOrder, setCreatedOrder] = useState(null)\r\n const [dialogMessage, setDialogMessage] = useState('')\r\n const [alert, setAlert] = useState([\r\n {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n ])\r\n const [isSubmitting, setIsSubmitting] = useState(false)\r\n const [organization, setOrganization] = useState(null)\r\n\r\n const dateFns = new DateFnsUtils()\r\n const history = useHistory()\r\n\r\n useEffect(() => {\r\n const orderNumber = getOrderKey()\r\n\r\n fetch('api' + ApplicationPaths.AppInfo).then(response => {\r\n response.json().then(data => {\r\n setOrganization(data)\r\n })\r\n })\r\n\r\n if (orderNumber !== null && orderNumber !== undefined) {\r\n getCreatedOrder(orderNumber, data => {\r\n setOrder(data)\r\n setBackURL(backUrlForReview())\r\n })\r\n } else {\r\n window.location.replace('/orders/create')\r\n }\r\n }, [])\r\n\r\n const saveOrderTemplate = async data => {\r\n const templateName = prompt('Please Enter Order Template Name:')\r\n if (\r\n templateName === null ||\r\n templateName === '' ||\r\n templateName.length < 4\r\n ) {\r\n setIsSubmitting(false)\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Please enter a valid template name (minimum 4 characters).'\r\n })\r\n return\r\n } else {\r\n data.templateName = templateName\r\n }\r\n setIsSubmitting(true)\r\n const token = await authService.getAccessToken()\r\n\r\n await fetch('api/createOrders/SaveOrderTemplate', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message: 'Order template saved successfully.'\r\n })\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this order template.'\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this order template.'\r\n })\r\n setIsSubmitting(false)\r\n })\r\n // probably don't need this\r\n setIsSubmitting(false)\r\n }\r\n\r\n const saveOrderData = async (data, isTemplate) => {\r\n setIsSubmitting(true)\r\n const token = await authService.getAccessToken()\r\n await fetch('api/createOrders/PutCreateOrder?shouldSubmit=true', {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const newData = await response.json()\r\n\r\n if (newData.orderCreated === true) {\r\n setDialogOpen(true)\r\n setSubmitSuccess(true)\r\n setCreatedOrder(newData)\r\n setDialogMessage(\r\n 'Order creation was successful, your order reference is ' +\r\n newData.orderNumber +\r\n ' from ' +\r\n newData.organizationName\r\n )\r\n removeOrderKey()\r\n } else {\r\n setDialogOpen(true)\r\n setSubmitSuccess(false)\r\n setDialogMessage(\r\n 'There was an error creating this order: ' +\r\n newData.errorMessage || ''\r\n )\r\n }\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this order information.'\r\n })\r\n setIsSubmitting(false)\r\n })\r\n // probably don't need this\r\n setIsSubmitting(false)\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const goToSection = path => {\r\n history.push(path)\r\n }\r\n\r\n const renderAlert = () => {\r\n return alert.open ? (\r\n
\r\n {\r\n handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n const getShipperName = () => {\r\n if (\r\n order !== null &&\r\n order.contacts !== null &&\r\n order.contacts !== undefined\r\n ) {\r\n const contacts = order.contacts.filter(\r\n contact => contact.addressType === 'PIC'\r\n )\r\n if (contacts.length > 0) {\r\n return contacts[0].name\r\n }\r\n }\r\n\r\n return '-'\r\n }\r\n\r\n const getConsigeeName = () => {\r\n if (\r\n order !== null &&\r\n order.contacts !== null &&\r\n order.contacts !== undefined\r\n ) {\r\n const contacts = order.contacts.filter(\r\n contact => contact.addressType === 'DLV'\r\n )\r\n if (contacts.length > 0) {\r\n return contacts[0].name\r\n }\r\n }\r\n\r\n return '-'\r\n }\r\n\r\n const handleActionDialog = action => {\r\n setDialogOpen(false)\r\n if (submitSuccess) {\r\n goToSection(\r\n ApplicationPaths.Orders +\r\n '/' +\r\n createdOrder.clientId +\r\n '/' +\r\n btoa(createdOrder.orderNumber) +\r\n '/0'\r\n )\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {renderAlert()}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {order !== null &&\r\n order !== undefined &&\r\n order.contacts !== null &&\r\n order.contacts !== undefined && (\r\n \r\n contact.addressType === 'PIC'\r\n )[0]\r\n }\r\n />\r\n )}\r\n \r\n \r\n {order !== null &&\r\n order !== undefined &&\r\n order.contacts !== null &&\r\n order.contacts !== undefined && (\r\n \r\n contact.addressType === 'DLV'\r\n )[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 window.location.replace(backURL)}\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n color=\"primary\"\r\n >\r\n Back\r\n \r\n {\r\n if (\r\n window.confirm(\r\n 'Are you sure you want to clear all details and start over?'\r\n )\r\n ) {\r\n removeOrderKey()\r\n window.location.replace(\r\n '/orders/create'\r\n )\r\n }\r\n }}\r\n className={`mr-4 ${classes.submit}`}\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n color=\"primary\"\r\n >\r\n Reset Form\r\n \r\n {\r\n // need to save as template\r\n saveOrderTemplate(_.omitBy(order, _.isNil))\r\n }}\r\n className={`mr-4 ${classes.submit}`}\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n color=\"primary\"\r\n >\r\n Save As Template\r\n \r\n {\r\n saveOrderData(_.omitBy(order, _.isNil))\r\n }}\r\n className={classes.submit}\r\n variant=\"contained\"\r\n disabled={isSubmitting}\r\n color=\"primary\"\r\n >\r\n {isSubmitting\r\n ? 'Submitting...'\r\n : 'Submit Order'}\r\n \r\n
\r\n
\r\n
\r\n \r\n

{dialogMessage}

\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport {\r\n FormControl,\r\n Grid,\r\n Card,\r\n Typography,\r\n CardContent,\r\n FormControlLabel,\r\n Checkbox,\r\n Select,\r\n MenuItem,\r\n InputLabel\r\n} from '@material-ui/core'\r\nimport { CollapseIcon } from '@mui-treasury/layout'\r\nimport { TextField, InputAdornment, Button } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport RecentActorsIcon from '@material-ui/icons/RecentActors'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n }\r\n}))\r\nconst passwordPath = { pathname: `${ApplicationPaths.Password}` }\r\n\r\nclass AccountDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n isLoading: true,\r\n isPosting: false,\r\n user: [],\r\n organization: null,\r\n isValidForm: true,\r\n isValidUserFirstName: true,\r\n errorTextUserFirstName: '',\r\n isValidUserLastName: true,\r\n errorTextUserLastName: '',\r\n companyCode: 'Default',\r\n demoMode: false,\r\n companyList: [],\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n },\r\n searchShipment: true,\r\n theme: props.theme,\r\n expanded: 'panel1'\r\n }\r\n\r\n this.onSearch = this.onSearch.bind(this)\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n this.getUserAccountData()\r\n this.populateConfig()\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._asyncRequest) {\r\n this._asyncRequest.cancel()\r\n }\r\n }\r\n\r\n updateUserField = (value, key) => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user[key] = value\r\n return { user }\r\n })\r\n }\r\n\r\n onSearch(e) {\r\n this.handleChange(e, 'searchShipment', false)\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n return { alert }\r\n })\r\n\r\n switch (elem) {\r\n case 'companyCode':\r\n value = event ? event.target.value : event\r\n this.setState({\r\n companyCode: value\r\n })\r\n this.updateUserField(value, 'companyCode')\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n handleCheckboxChange = (key, value) => {\r\n switch (key) {\r\n case 'demoMode':\r\n this.updateUserField(value, 'demoMode')\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n handleChange(event, field, isRequired) {\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = false\r\n alerts.showFail = false\r\n return { alerts }\r\n })\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n return { alert }\r\n })\r\n\r\n const { isValidUserFirstName, isValidUserLastName } = this.state\r\n\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = false\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'account-first-name':\r\n this.setState({\r\n errorTextUserFirstName: !isValidField\r\n ? 'First Name ' + msgError\r\n : '',\r\n isValidUserFirstName: isValidField\r\n })\r\n\r\n this.updateUserField(value, 'firstName')\r\n\r\n if (isValidUserLastName && isValidField) {\r\n isValidForm = true\r\n }\r\n break\r\n\r\n case 'account-last-name':\r\n this.setState({\r\n errorTextUserLastName: !isValidField\r\n ? 'Last Name ' + msgError\r\n : '',\r\n isValidUserLastName: isValidField\r\n })\r\n\r\n this.updateUserField(value, 'lastName')\r\n if (isValidUserFirstName && isValidField) {\r\n isValidForm = true\r\n }\r\n break\r\n\r\n case 'searchShipment':\r\n const searchShipment = this.state.searchShipment\r\n this.setState({ searchShipment: !searchShipment })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm })\r\n }\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n handleSubmit = async event => {\r\n const { user, isValidForm } = this.state\r\n event.preventDefault()\r\n\r\n if (user.id && isValidForm) {\r\n this.updateUserAccount(user.id, user)\r\n }\r\n }\r\n\r\n handleShowChangePassword(event) {\r\n this.setState({ showChangePassword: !this.state.showChangePassword })\r\n }\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n companyList: data.companyCodeArray\r\n })\r\n }\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n {\r\n this.handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n renderInput = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n disabled,\r\n adornment,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { user } = this.state\r\n const { classes } = this.props\r\n\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleChange(e, id, required)}\r\n {...params}\r\n InputProps={\r\n adornment\r\n ? {\r\n endAdornment: (\r\n \r\n \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 const {\r\n isLoading,\r\n isPosting,\r\n isAdmin,\r\n user,\r\n expanded,\r\n organization,\r\n companyCode,\r\n demoMode,\r\n companyList\r\n } = this.state\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#000000'\r\n\r\n return (\r\n
\r\n \r\n {this.renderAlert()}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n ACCOUNT SETTINGS\r\n
\r\n
\r\n
    \r\n \r\n {' '}\r\n \r\n person\r\n {' '}\r\n My Account\r\n \r\n
  • \r\n \r\n lock\r\n {' '}\r\n \r\n Change Password\r\n \r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {' '}\r\n My Account Details\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'account-email',\r\n 'Email',\r\n 'Email',\r\n 'email',\r\n false,\r\n true,\r\n false\r\n )}\r\n \r\n \r\n
\r\n {this.renderInput(\r\n 'account-first-name',\r\n 'First Name',\r\n 'First Name',\r\n 'firstName',\r\n true,\r\n false,\r\n true,\r\n 'isValidUserFirstName',\r\n 'errorTextUserFirstName'\r\n )}\r\n
\r\n \r\n \r\n {this.renderInput(\r\n 'account-last-name',\r\n 'Last Name',\r\n 'Last Name',\r\n 'lastName',\r\n true,\r\n false,\r\n false,\r\n 'isValidUserLastName',\r\n 'errorTextUserLastName'\r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n Company\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'companyCode'\r\n )\r\n }\r\n >\r\n \r\n {\r\n 'Default'\r\n }\r\n \r\n {companyList\r\n ? companyList.map(\r\n function (\r\n company,\r\n i\r\n ) {\r\n return (\r\n \r\n {\r\n company\r\n }\r\n \r\n )\r\n }\r\n )\r\n : null}\r\n \r\n
\r\n
\r\n \r\n \r\n {\r\n this.handleCheckboxChange(\r\n 'demoMode',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n user.demoMode\r\n ? user.demoMode\r\n : demoMode\r\n }\r\n />\r\n }\r\n label={\r\n 'Demo Mode'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.handleSubmit(e)\r\n }\r\n disabled={\r\n !this.state\r\n .isValidForm ||\r\n this.state.isPosting\r\n }\r\n >\r\n Save\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n {' '}\r\n User Role\r\n
\r\n \r\n {isAdmin\r\n ? 'Administrator'\r\n : 'Member'}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n async getUserAccountData() {\r\n this.setState({ isLoading: true })\r\n const token = await authService.getAccessToken()\r\n const userIsAdmin = await authService.isAdmin()\r\n const response = await fetch('api/users/current', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ user: data, isAdmin: userIsAdmin })\r\n }\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n async updateUserAccount(id, data) {\r\n this.setState({ isPosting: true })\r\n let errText = ''\r\n\r\n const token = await authService.getAccessToken()\r\n await fetch('api/users/' + id, {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'User information is saved.'\r\n return { alert }\r\n })\r\n results = response.json()\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n results = response.text()\r\n }\r\n return results\r\n })\r\n .then(d => {\r\n this.setState({\r\n user: data.id ? d : data,\r\n isPosting: false,\r\n isValidForm: true\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n console.log(error)\r\n })\r\n }\r\n}\r\nAccountDetails.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n}\r\nexport default withStyles(styles)(AccountDetails)\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { Container, Grid, CardContent } from '@material-ui/core'\r\nimport { CollapseBtn, CollapseIcon } from '@mui-treasury/layout'\r\nimport { FormControl, Button, IconButton } from '@material-ui/core'\r\nimport { Input, InputAdornment, InputLabel } from '@material-ui/core'\r\nimport { Divider, FormHelperText, Typography } from '@material-ui/core'\r\nimport { green, red } from '@material-ui/core/colors'\r\nimport { Visibility, VisibilityOff } from '@material-ui/icons'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CheckIcon from '@material-ui/icons/Check'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport AlertMessage from './shared/Alert'\r\nimport CardTitle from './shared/CardTitle'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n }\r\n}))\r\nconst accountPath = { pathname: `${ApplicationPaths.Account}` }\r\n\r\nclass Password extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n isPosting: false,\r\n saved: false,\r\n organization: null,\r\n rules: {\r\n minLen: 8,\r\n minNumbers: 1\r\n },\r\n current: {\r\n value: '',\r\n show: false,\r\n isValid: true,\r\n errorText: ''\r\n },\r\n incoming: {\r\n value: '',\r\n show: false,\r\n isValid: true,\r\n hasMinLen: false,\r\n hasMinNumber: false,\r\n errorText: ''\r\n },\r\n confirm: {\r\n value: '',\r\n show: false,\r\n isValid: true,\r\n errorText: ''\r\n },\r\n isValidForm: false,\r\n\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n }\r\n }\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._asyncRequest) {\r\n this._asyncRequest.cancel()\r\n }\r\n }\r\n\r\n handleMouseDown = event => {\r\n event.preventDefault()\r\n }\r\n\r\n handleClickShowPassword = field => {\r\n switch (field) {\r\n case 'current':\r\n this.setState(prevState => {\r\n let current = Object.assign({}, prevState.current)\r\n current.show = !current.show\r\n return { current }\r\n })\r\n break\r\n\r\n case 'incoming':\r\n this.setState(prevState => {\r\n let incoming = Object.assign({}, prevState.incoming)\r\n incoming.show = !incoming.show\r\n return { incoming }\r\n })\r\n break\r\n\r\n case 'confirm':\r\n this.setState(prevState => {\r\n let confirm = Object.assign({}, prevState.confirm)\r\n confirm.show = !confirm.show\r\n return { confirm }\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n componentDidMount() {\r\n this.populateConfig()\r\n }\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({ organization: data })\r\n }\r\n handleChange(event, field, label, isRequired) {\r\n const rules = this.state.rules\r\n\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = false\r\n alerts.showFail = false\r\n return { alerts }\r\n })\r\n\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = false\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = label + ' cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'current':\r\n this.setState(prevState => {\r\n let current = Object.assign({}, prevState.current)\r\n current.value = value\r\n current.isValid = isValidField\r\n current.errorText = !isValidField ? msgError : ''\r\n return { current }\r\n })\r\n\r\n if (isValidField && this.state.confirm.isValid)\r\n isValidForm = true\r\n break\r\n\r\n case 'incoming':\r\n let hasMinLen = false\r\n let hasNumber = false\r\n let hasLowercase = false\r\n let hasUppercase = false\r\n\r\n if (isValidField) {\r\n if (value.length < rules.minLen) {\r\n isValidField = false\r\n msgError =\r\n label +\r\n ' must have at least (' +\r\n rules.minLen +\r\n ') characters.'\r\n } else {\r\n hasMinLen = true\r\n }\r\n\r\n hasNumber = /\\d/.test(value)\r\n\r\n if (!hasNumber) {\r\n isValidField = false\r\n msgError = label + ' must contain at least 1 number.'\r\n }\r\n\r\n hasLowercase = /[a-z]/.test(value)\r\n\r\n if (!hasLowercase) {\r\n isValidField = false\r\n msgError =\r\n label + ' must contain at least 1 lowercase letter.'\r\n }\r\n\r\n hasUppercase = /[A-Z]/.test(value)\r\n\r\n if (!hasUppercase) {\r\n isValidField = false\r\n msgError =\r\n label + ' must contain at least 1 uppercase letter.'\r\n }\r\n\r\n const confirmPassword = this.state.confirm.value || ''\r\n const isValidCurrentPassword = this.state.current.isValid\r\n\r\n let errorTextConfirmPassword = ''\r\n\r\n if (confirmPassword.length > 0) {\r\n let valid = true\r\n\r\n if (value !== confirmPassword) {\r\n valid = false\r\n } else {\r\n isValidField = true\r\n isValidForm = isValidCurrentPassword\r\n }\r\n\r\n errorTextConfirmPassword = valid\r\n ? ''\r\n : 'Confirm Password do not match. '\r\n\r\n //this setState is maintained so as not to delete the previous message from the Confirm field\r\n this.setState(prevState => {\r\n let confirm = Object.assign({}, prevState.confirm)\r\n confirm.isValid = valid\r\n confirm.errorText = errorTextConfirmPassword\r\n return { confirm }\r\n })\r\n }\r\n }\r\n this.setState(prevState => {\r\n let incoming = Object.assign({}, prevState.incoming)\r\n incoming.value = value\r\n incoming.hasMinLen = hasMinLen\r\n incoming.hasNumber = hasNumber\r\n incoming.hasLowercase = hasLowercase\r\n incoming.hasUppercase = hasUppercase\r\n incoming.isValid = isValidField\r\n incoming.errorText = !isValidField ? msgError : ''\r\n return { incoming }\r\n })\r\n break\r\n\r\n case 'confirm':\r\n const newPassword = this.state.incoming.value || ''\r\n const isValidCurrentPassword = this.state.current.isValid\r\n\r\n if (isValidField && newPassword.length > 0) {\r\n if (value !== newPassword) {\r\n isValidField = false\r\n msgError = label + ' do not match. '\r\n } else {\r\n isValidForm = isValidCurrentPassword\r\n }\r\n }\r\n\r\n this.setState(prevState => {\r\n let confirm = Object.assign({}, prevState.confirm)\r\n confirm.value = value\r\n confirm.isValid = isValidField\r\n confirm.errorText = !isValidField ? msgError : ''\r\n return { confirm }\r\n })\r\n\r\n break\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm })\r\n }\r\n\r\n handleSubmit = async event => {\r\n const { isValidForm, current, confirm } = this.state\r\n event.preventDefault()\r\n\r\n if (isValidForm) {\r\n let password = {\r\n currentPassword: current.value,\r\n newPassword: confirm.value\r\n }\r\n this.UpdatePassword(password)\r\n }\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n renderInput = (id, label, placeholder, obj) => {\r\n const { classes } = this.props\r\n return (\r\n \r\n \r\n {label}\r\n this.handleChange(e, id, label, true)}\r\n error={!obj.isValid}\r\n endAdornment={\r\n \r\n \r\n this.handleClickShowPassword(id)\r\n }\r\n onMouseDown={this.handleMouseDown}\r\n >\r\n {obj.show ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n }\r\n />\r\n \r\n {obj.errorText}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n this.handleCloseAlert()}\r\n />\r\n
\r\n ) : null\r\n }\r\n\r\n render() {\r\n const {\r\n current,\r\n incoming,\r\n confirm,\r\n organization,\r\n isPosting,\r\n isLoading\r\n } = this.state\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#000000'\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n ACCOUNT SETTINGS\r\n
\r\n
\r\n
    \r\n \r\n {' '}\r\n \r\n person\r\n {' '}\r\n \r\n My Account\r\n \r\n \r\n \r\n \r\n lock\r\n {' '}\r\n Change Password\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

\r\n Change Password\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'current',\r\n 'Current Password',\r\n 'Current Password',\r\n current\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'incoming',\r\n 'New Password',\r\n 'New Password',\r\n incoming\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'confirm',\r\n 'Confirm New Password',\r\n 'Confirm New Password',\r\n confirm\r\n )}\r\n \r\n \r\n
\r\n \r\n Cancel\r\n \r\n \r\n this.handleSubmit(\r\n e\r\n )\r\n }\r\n disabled={\r\n !this\r\n .state\r\n .isValidForm ||\r\n this\r\n .state\r\n .isPosting\r\n }\r\n >\r\n Save\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n The\r\n security\r\n of your\r\n account\r\n is\r\n important\r\n for us.\r\n Before\r\n you can\r\n proceed,\r\n please\r\n take a\r\n moment\r\n to\r\n create a\r\n more\r\n secured\r\n password.\r\n
\r\n \r\n \r\n
\r\n Your\r\n Password\r\n must\r\n have at\r\n least:\r\n
\r\n \r\n \r\n \r\n \r\n 8\r\n characters\r\n \r\n
\r\n {incoming.hasMinLen ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n\r\n \r\n \r\n 1\r\n number\r\n \r\n
\r\n {incoming.hasNumber ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n 1\r\n lowercase\r\n letter\r\n \r\n
\r\n {incoming.hasLowercase ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n 1\r\n uppercase\r\n letter\r\n \r\n
\r\n {incoming.hasUppercase ? (\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.renderAlert()}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n async UpdatePassword(data) {\r\n this.setState({ isPosting: true })\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/users/UpdatePassword', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'Password is saved.'\r\n return { alert }\r\n })\r\n this.setState({\r\n saved: true\r\n })\r\n } else {\r\n const data = await response.text()\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details: ' +\r\n data\r\n return { alert }\r\n })\r\n }\r\n\r\n this.setState({\r\n isPosting: false,\r\n isValidForm: false\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(Password)\r\n","import * as React from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport {\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogActions,\r\n DialogContentText,\r\n Button,\r\n Divider\r\n} from '@material-ui/core'\r\n\r\nexport default class DialogConfirm extends React.Component {\r\n render() {\r\n if (!this.props.show) {\r\n return null\r\n }\r\n return (\r\n \r\n \r\n {' '}\r\n {this.props.title}\r\n \r\n \r\n \r\n \r\n {this.props.message}\r\n {this.props.children}\r\n \r\n \r\n \r\n \r\n this.props.callback(false)}\r\n >\r\n No\r\n \r\n this.props.callback(true)}\r\n >\r\n Yes, Delete\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\nDialogConfirm.propTypes = {\r\n callback: PropTypes.func.isRequired,\r\n show: PropTypes.bool.isRequired\r\n}\r\n","import React from 'react'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogContentText from '@material-ui/core/DialogContentText'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport ImportExportIcon from '@material-ui/icons/ImportExport'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\n\r\nexport default function ClientUploadDialog(props) {\r\n const [open, setOpen] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [selectedFile, setSelectedFile] = React.useState(null)\r\n const [isSelected, setIsSelected] = React.useState(false)\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true)\r\n }\r\n\r\n const handleClose = () => {\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n setOpen(false)\r\n }\r\n\r\n const handleSuccess = () => {\r\n setIsSuccess(true)\r\n // reload page\r\n setInterval(function () {\r\n setIsSuccess(false)\r\n setOpen(false)\r\n }, 4000)\r\n window.location.reload()\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsError(true)\r\n }\r\n\r\n const changeHandler = event => {\r\n setSelectedFile(event.target.files[0])\r\n setIsSelected(true)\r\n }\r\n\r\n const handleSubmission = async () => {\r\n if (selectedFile === null) {\r\n setIsError(true)\r\n setErrorMessage('No file selected!')\r\n } else {\r\n setIsError(false)\r\n setIsSuccess(false)\r\n setErrorMessage('')\r\n setIsLoading(true)\r\n\r\n const formData = new FormData()\r\n formData.append('File', selectedFile)\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*'\r\n }\r\n\r\n fetch('api/clients/ImportClients', {\r\n headers: header,\r\n method: 'POST',\r\n body: formData\r\n })\r\n .then(response => response.text())\r\n .then(result => {\r\n console.log(result)\r\n setIsLoading(false)\r\n handleSuccess()\r\n })\r\n .catch(error => {\r\n setIsLoading(false)\r\n console.log(error)\r\n handleError('Client import failed, please retry.')\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 Client Import File Select\r\n \r\n \r\n Accepted file format is .csv with headers - required\r\n columns are 'Name', 'Code', 'ContactFirstName',\r\n 'ContactLastName', 'ContactEmail', 'ContactPhoneNumber',\r\n 'ContactAddressLine1', 'ContactAddressCountry',\r\n 'ContactAddressRegion', 'ContactAddressCity',\r\n 'ContactAddressZipCode', 'ClientView'\r\n \r\n \r\n {isLoading && }\r\n \r\n \r\n {isSelected ? (\r\n
\r\n

Filename: {selectedFile.name}

\r\n

Type: {selectedFile.type}

\r\n

\r\n Size:{' '}\r\n {parseInt(Number(selectedFile.size) / 1000)}kb\r\n

\r\n

\r\n Last Modified:{' '}\r\n {selectedFile.lastModifiedDate.toLocaleDateString()}\r\n

\r\n
\r\n ) : (\r\n

Select a file to show details

\r\n )}\r\n \r\n \r\n
\r\n {isSuccess && (\r\n \r\n Clients successfully imported!\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport { IconButton, Paper, Grid, CardContent } from '@material-ui/core'\r\nimport { LinearProgress, Typography, Button } from '@material-ui/core'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport PublishOutlinedIcon from '@material-ui/icons/PublishOutlined'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport DialogConfirm from './shared/DialogConfirm'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport ClientImportDialog from './shared/ClientImportDialog'\r\nimport { NavLink } from 'react-router-dom'\r\nimport MaterialTable from 'material-table'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport { retrieveView } from './shared/Views'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport TableViewManagementDialog from './shared/TableViewManagementDialog'\r\nimport TableViewCreateDialog from './shared/TableViewCreateDialog'\r\nimport {\r\n Checkbox,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n TextField\r\n} from '@material-ui/core'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport { getModuleNameByKey } from '../utils/data-mapping'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n h2: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\nconst clientsPath = { pathname: `${ApplicationPaths.Clients}` }\r\nconst usersPath = { pathname: `${ApplicationPaths.Users}` }\r\n\r\nclass Clients extends PureComponent {\r\n static displayName = Clients.name\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n isLoading: true,\r\n clients: [],\r\n users: [],\r\n filteredUsers: [],\r\n selectedClients: [],\r\n client: {\r\n id: 0,\r\n customerCode: '',\r\n notifyError: false,\r\n errMessage: ''\r\n },\r\n dialogOpen: false,\r\n showSuccessAlert: false,\r\n theme: props.theme,\r\n canImportClients: false,\r\n canPublishClientIds: false,\r\n organization: null,\r\n headerColumns: [],\r\n addUsersDialogOpen: false,\r\n loadingClientUsers: false,\r\n isAddUsersSuccess: false,\r\n isAddUsersError: false,\r\n addUsersResult: '',\r\n addingUsers: false,\r\n isAlertSuccess: false,\r\n showAlert: false,\r\n alertMessage: ''\r\n }\r\n this.showDialog = this.showDialog.bind(this)\r\n this.populateClientsData = this.populateClientsData.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n await this.getHeaderColumns()\r\n await this.populateClientsData()\r\n await this.populateConfig()\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n const isAdmin = await authService.isAdmin()\r\n this.setState({ canImportClients: isSuperAdmin })\r\n this.setState({ canPublishClientIds: isAdmin || isSuperAdmin })\r\n }\r\n\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data\r\n })\r\n }\r\n\r\n publishClientIdsToCargoWise = async clients => {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const clientIds = clients.map(client => client.id)\r\n const body = JSON.stringify(clientIds)\r\n\r\n const response = await fetch(\r\n 'api/clients/PublishClientIdsToCargowise',\r\n {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, *',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: body\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n this.setState({\r\n isAlertSuccess: true,\r\n showAlert: true,\r\n alertMessage: 'Client Ids Published to CargoWise Successfully.',\r\n isLoading: false\r\n })\r\n } else {\r\n const responseText = await response.text()\r\n this.setState({\r\n isAlertSuccess: false,\r\n showAlert: true,\r\n alertMessage: responseText,\r\n isLoading: false\r\n })\r\n }\r\n }\r\n\r\n getHeaderColumns = async () => {\r\n const view = await retrieveView(null, 'ClientsGrid')\r\n if (view) {\r\n this.setState({ headerColumns: view.columnDefinitionsArray })\r\n }\r\n }\r\n\r\n showDialog(_client) {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client = _client\r\n return { client }\r\n })\r\n this.setState({ dialogOpen: true })\r\n }\r\n\r\n handleActionsDialog = action => {\r\n if (action) {\r\n this.handleDelete()\r\n }\r\n this.setState({\r\n dialogOpen: !this.state.dialogOpen\r\n })\r\n }\r\n\r\n handleDelete = async event => {\r\n var id = this.state.client.id\r\n this.deleteClient(id)\r\n }\r\n\r\n hideRowNotify() {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client.notifyError = false\r\n return { client }\r\n })\r\n }\r\n\r\n getUserEmailNameString(user) {\r\n if (user) {\r\n return (\r\n user.email + ' (' + user.firstName + ' ' + user.lastName + ')'\r\n )\r\n } else {\r\n return ''\r\n }\r\n }\r\n\r\n handleUserSelectChange = event => {\r\n const id = event.target.id\r\n const checked = event.target.checked\r\n this.setState(prevState => {\r\n let users = [...prevState.users]\r\n users.forEach(user => {\r\n if (user.id === id) {\r\n user.checked = checked\r\n }\r\n })\r\n return { users }\r\n })\r\n }\r\n\r\n renderAlert() {\r\n const { showAlert, isAlertSuccess, alertMessage } = this.state\r\n\r\n if (showAlert) {\r\n return (\r\n this.setState({ showAlert: false })}\r\n >\r\n {alertMessage}\r\n \r\n )\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n isLoading,\r\n clients,\r\n client,\r\n canImportClients,\r\n canPublishClientIds,\r\n organization,\r\n headerColumns\r\n } = this.state\r\n const { classes } = this.props\r\n const tableTheme = createTheme()\r\n\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n let tableActions = [\r\n {\r\n icon: () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n Add Client\r\n \r\n \r\n \r\n \r\n )\r\n },\r\n isFreeAction: true\r\n },\r\n {\r\n // need an action to add users to selected clients\r\n icon: () => {\r\n return (\r\n \r\n Add Users\r\n \r\n )\r\n },\r\n onClick: (event, rowData) => {\r\n this.setState({ selectedClients: rowData }, () => {\r\n this.setState({\r\n loadingClientUsers: true,\r\n addUsersDialogOpen: true\r\n })\r\n this.populateOrgUsersData().then(() => {\r\n this.setState({ loadingClientUsers: false })\r\n })\r\n })\r\n },\r\n isFreeAction: false,\r\n tooltip: 'Add Users to Selected Clients'\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n Delete Client\r\n \r\n )\r\n },\r\n onClick: (event, rowData) => {\r\n // currently can only remove one client at a time\r\n if (rowData.length > 1) {\r\n alert('Please select only one client to delete.')\r\n return\r\n }\r\n const deleteClient = {\r\n id: rowData[0].id,\r\n customerCode: rowData[0].integrationCompanyCode\r\n }\r\n this.showDialog(deleteClient)\r\n },\r\n isFreeAction: false,\r\n tooltip: 'Delete Client'\r\n }\r\n ]\r\n\r\n if (canImportClients) {\r\n tableActions.push({\r\n icon: () => {\r\n return \r\n },\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n if (canPublishClientIds) {\r\n tableActions.push({\r\n icon: () => {\r\n return \r\n },\r\n isFreeAction: false,\r\n onClick: (event, rowData) => {\r\n this.publishClientIdsToCargoWise(rowData)\r\n },\r\n tooltip: 'Publish Client Ids to CargoWise'\r\n })\r\n }\r\n\r\n const tableColumnHeaders = headerColumns\r\n ? headerColumns\r\n .filter(item => item.visible)\r\n .map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: false,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n render: rowData => {\r\n if (headcell.value === 'integrationCompanyCode') {\r\n var path =\r\n clientsPath.pathname + '/' + rowData.id\r\n return (\r\n \r\n {rowData[headcell.value]}\r\n \r\n )\r\n } else if (headcell.value === 'clientUserCount') {\r\n var clientId = rowData.id\r\n var userCount = rowData.clientUserCount\r\n return (\r\n \r\n {userCount}\r\n \r\n )\r\n } else if (\r\n headcell.value === 'modulePermissionString'\r\n ) {\r\n // map each module to a span with a colored background depending on the module\r\n return rowData.modulePermissionArray.map(\r\n (module, index) => {\r\n return (\r\n \r\n {getModuleNameByKey(\r\n module.propertyKey\r\n )}\r\n \r\n )\r\n }\r\n )\r\n } else {\r\n return rowData[headcell.value]\r\n }\r\n }\r\n }\r\n })\r\n : []\r\n\r\n return (\r\n \r\n {this.renderAlert()}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n (\r\n \r\n )\r\n )\r\n }}\r\n actions={tableActions}\r\n options={{\r\n headerStyle: {\r\n backgroundColor:\r\n backgroundColor,\r\n color: textColor\r\n },\r\n filtering: true,\r\n maxBodyHeight:\r\n 'calc(100vh - 100px)',\r\n pageSizeOptions: [\r\n 25, 50, 75\r\n ],\r\n filterRowStyle: {\r\n position:\r\n 'sticky',\r\n top: 49,\r\n background:\r\n 'white',\r\n zIndex: 5 /* optionally */\r\n },\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n searchFieldAlignment:\r\n 'right',\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: false,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n selection: true,\r\n pagination: {\r\n rowsPerPage:\r\n 'Rows per page:',\r\n displayRows:\r\n 'off'\r\n },\r\n exportButton: {\r\n csv: true\r\n },\r\n exportFileName:\r\n 'ExportClients_' +\r\n Date.now(),\r\n exportAllData: true,\r\n tableLayout: 'auto'\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.client.integrationCompanyCode}\r\n \r\n \r\n {this.renderAddUsersToClientDialog()}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n setUsersCheckedValue(isChecked) {\r\n this.setState(prevState => {\r\n let users = [...prevState.users]\r\n users.forEach(users => {\r\n users.checked = isChecked\r\n })\r\n return { users }\r\n })\r\n }\r\n\r\n setAllUsersUnchecked = () => {\r\n this.setUsersCheckedValue(false)\r\n }\r\n\r\n setAllUsersChecked = () => {\r\n this.setUsersCheckedValue(true)\r\n }\r\n\r\n async saveClientUserDetails() {\r\n const { selectedClients, users } = this.state\r\n const selectedUsers = users.filter(user => user.checked)\r\n\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to add ' +\r\n selectedUsers.length +\r\n ' user(s) to ' +\r\n selectedClients.length +\r\n ' client(s)?'\r\n )\r\n ) {\r\n return\r\n }\r\n\r\n this.setState({ addingUsers: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const data = []\r\n\r\n selectedClients.forEach(client => {\r\n selectedUsers.forEach(user => {\r\n data.push({\r\n clientId: client.id,\r\n userId: user.id\r\n })\r\n })\r\n })\r\n\r\n fetch('api/users/AddClientUsers', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, *',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n this.setAllUsersUnchecked()\r\n this.setState({\r\n isAddUsersSuccess: true,\r\n addUsersResult:\r\n 'User(s) Added To Client(s) Successfully.',\r\n addingUsers: false\r\n })\r\n this.populateClientsData()\r\n } else {\r\n this.setState({\r\n isAddUsersError: true,\r\n addUsersResult:\r\n 'An Error Occurred Adding User(s) To Client(s) - Please Contact Support.',\r\n addingUsers: false\r\n })\r\n console.log(response.text())\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n isAddUsersError: true,\r\n addUsersResult:\r\n 'An Error Occurred Adding User(s) To Client(s) - Please Contact Support.',\r\n addingUsers: false\r\n })\r\n console.log(error)\r\n })\r\n }\r\n\r\n renderAddUsersToClientDialog() {\r\n const {\r\n users,\r\n filteredUsers,\r\n selectedClients,\r\n loadingClientUsers,\r\n isAddUsersSuccess,\r\n isAddUsersError,\r\n addUsersResult,\r\n addingUsers\r\n } = this.state\r\n return (\r\n this.setState({ addUsersDialogOpen: false })}\r\n >\r\n Select User(s)\r\n {(loadingClientUsers || addingUsers) && }\r\n {!loadingClientUsers && !addingUsers && (\r\n \r\n \r\n {\r\n <>\r\n }\r\n onClick={this.setAllUsersChecked}\r\n >\r\n Select All\r\n \r\n  \r\n }\r\n onClick={this.setAllUsersUnchecked}\r\n >\r\n Unselect All\r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredUsers = users.filter(user => {\r\n return (\r\n user.email\r\n .toLowerCase()\r\n .includes(\r\n value.toLowerCase()\r\n ) ||\r\n user.firstName\r\n .toLowerCase()\r\n .includes(\r\n value.toLowerCase()\r\n ) ||\r\n user.lastName\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n )\r\n })\r\n this.setState({ filteredUsers })\r\n }}\r\n placeholder={'Enter user name or email..'}\r\n />\r\n
\r\n {filteredUsers.map(user => (\r\n \r\n {' '}\r\n \r\n
\r\n ))}\r\n \r\n
\r\n )}\r\n \r\n }\r\n onClick={() => {\r\n this.setState({ addUsersDialogOpen: false })\r\n this.setAllUsersUnchecked()\r\n }}\r\n >\r\n Close\r\n \r\n  \r\n }\r\n onClick={async () => {\r\n await this.saveClientUserDetails()\r\n }}\r\n >\r\n Add{' '}\r\n {users.filter(user => user.checked).length > 1\r\n ? 'Users'\r\n : 'User'}{' '}\r\n to{' '}\r\n {selectedClients.length > 1\r\n ? 'Selected Clients'\r\n : 'Selected Client'}\r\n \r\n \r\n {isAddUsersSuccess && (\r\n \r\n {addUsersResult}\r\n \r\n )}\r\n {isAddUsersError && (\r\n {\r\n this.setState({ isAddUsersError: false })\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {addUsersResult}\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/clients', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n // need to update some boolean fields to be displayed as YES/NO\r\n data.forEach(client => {\r\n client.isConsignee = client.isConsignee === true ? 'YES' : ''\r\n client.isConsignor = client.isConsignor === true ? 'YES' : ''\r\n })\r\n this.setState({ clients: data })\r\n }\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n async populateOrgUsersData() {\r\n const token = await authService.getAccessToken()\r\n const clientUsersResponse = await fetch(\r\n 'api/users/GetClientUsersForOrg',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (clientUsersResponse.ok) {\r\n const data = await clientUsersResponse.json()\r\n // need to add a checked property to each user\r\n data.forEach(user => {\r\n user.checked = false\r\n user.disabled = false\r\n })\r\n this.setState({\r\n users: data,\r\n filteredUsers: data\r\n })\r\n } else {\r\n // handle error\r\n }\r\n }\r\n\r\n async deleteClient(id) {\r\n this.setState({ isPosting: true })\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'DELETE',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n fetch('api/clients?clientId=' + id, options)\r\n .then(res => {\r\n if (res.ok) {\r\n this.setState({ showSuccessAlert: true })\r\n this.setState({ isPosting: false })\r\n this.populateClientsData()\r\n\r\n return Promise.resolve('Client (' + id + ') deleted.')\r\n } else {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client.notifyError = true\r\n client.errMessage =\r\n 'Sorry, there was an error while deleting this client.'\r\n return { client }\r\n })\r\n this.setState({ isPosting: false })\r\n return Promise.reject(\r\n 'An error occurred (' + res.status + ').'\r\n )\r\n }\r\n })\r\n .catch(err => {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client.notifyError = true\r\n client.errMessage =\r\n 'Sorry, there was an error while deleting this client.'\r\n return { client }\r\n })\r\n this.setState({ isPosting: false })\r\n console.log(err)\r\n })\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(Clients)\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport { IconButton, Paper, Grid } from '@material-ui/core'\r\nimport { LinearProgress, Typography, Button } from '@material-ui/core'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { NavLink } from 'react-router-dom'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle\r\n} from '@material-ui/core'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n h2: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\nconst clientsPath = { pathname: `${ApplicationPaths.Clients}` }\r\nconst usersPath = { pathname: `${ApplicationPaths.Users}` }\r\n\r\nclass UserClients extends PureComponent {\r\n static displayName = UserClients.name\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n isLoading: true,\r\n clients: [],\r\n selectedClients: [],\r\n deleteArrayIndexes: [],\r\n userId: props.match.params.userId\r\n ? props.match.params.userId\r\n : null,\r\n user: null,\r\n dialogOpen: false,\r\n notificationAlert: {\r\n open: false,\r\n message: 'test',\r\n severity: 'success'\r\n },\r\n theme: props.theme,\r\n canImportClients: false\r\n }\r\n this.showDialog = this.showDialog.bind(this)\r\n this.populateClientsData = this.populateClientsData.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n this.populateClientsData()\r\n }\r\n\r\n populateDataToDisplay(dataset) {\r\n if (dataset) {\r\n var clientsArray = []\r\n for (let i = 0; i < dataset.length; i++) {\r\n var clientToAdd = [\r\n dataset[i].id,\r\n dataset[i].integrationCompanyCode,\r\n dataset[i].contactFirstName + ' ' + dataset[i].contactLastName,\r\n dataset[i].name,\r\n dataset[i].clientUserCount\r\n ]\r\n clientsArray.push(clientToAdd)\r\n }\r\n return clientsArray\r\n }\r\n }\r\n\r\n showDialog() {\r\n this.setState({ dialogOpen: true })\r\n }\r\n\r\n hideRowNotify() {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client.notifyError = false\r\n return { client }\r\n })\r\n }\r\n\r\n render() {\r\n const { isLoading, clients, user } = this.state\r\n const { classes } = this.props\r\n\r\n const data = this.populateDataToDisplay(clients)\r\n const options = {\r\n filter: false,\r\n viewColumns: false,\r\n print: false,\r\n download: false,\r\n selectableRowsOnClick: true,\r\n selectableRows: 'multiple',\r\n caseSensitive: false,\r\n rowsPerPageOptions: [10, 15, 25, 50, 100],\r\n filterType: 'dropdown',\r\n responsive: 'stacked',\r\n rowsPerPage: 25,\r\n searchOpen: false,\r\n customToolbarSelect: selectedRows => {\r\n return (\r\n {\r\n this.setState(\r\n {\r\n selectedClients: selectedRows.data.map(\r\n row => clients[row.dataIndex]\r\n )\r\n },\r\n () => {\r\n this.showDialog()\r\n }\r\n )\r\n }}\r\n >\r\n Remove Client User Link(s)\r\n \r\n )\r\n }\r\n }\r\n\r\n const headCells = [\r\n {\r\n id: 'id',\r\n label: 'Id',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n id: 'manageUser',\r\n label: '',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var clientId = tableMeta.rowData[0]\r\n var userName = user.firstName + ' ' + user.lastName\r\n var userId = user.id\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n id: 'customerCode',\r\n label: 'Client Code',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var id = tableMeta.rowData[0]\r\n var customerCode = tableMeta.rowData[1]\r\n var path = clientsPath.pathname + '/' + id\r\n return (\r\n \r\n {customerCode}\r\n \r\n )\r\n }\r\n }\r\n },\r\n { id: 'name', label: 'Client Name' },\r\n {\r\n id: 'clientUserCount',\r\n label: 'Users',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const clientId = tableMeta.rowData[0]\r\n const userCount = tableMeta.rowData[4]\r\n return (\r\n \r\n {userCount}\r\n \r\n )\r\n }\r\n }\r\n }\r\n ]\r\n\r\n return this.state.isLoading ? (\r\n \r\n ) : (\r\n <>\r\n {this.state.notificationAlert.open ? (\r\n {\r\n this.setState({\r\n notificationAlert: {\r\n open: false,\r\n message: '',\r\n severity: 'info'\r\n }\r\n })\r\n }}\r\n open={this.state.notificationAlert.open}\r\n >\r\n {this.state.notificationAlert.message}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n {' '}\r\n {user.firstName + ' ' + user.lastName}\r\n \r\n }\r\n columns={headCells}\r\n options={options}\r\n data={data}\r\n />\r\n \r\n \r\n \r\n this.setState({ dialogOpen: false })}\r\n >\r\n Remove Client User Links?\r\n \r\n {this.state.selectedClients.map(client => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n \r\n }\r\n onClick={() => {\r\n this.setState({ dialogOpen: false })\r\n }}\r\n >\r\n Cancel\r\n \r\n  \r\n }\r\n onClick={async () => {\r\n await this.removeClientUserLinks()\r\n this.setState({ dialogOpen: false })\r\n }}\r\n >\r\n Remove Client User Links\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const clientsResponse = await fetch(\r\n 'api/clients?userId=' + this.state.userId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (clientsResponse.ok) {\r\n const data = await clientsResponse.json()\r\n this.setState({ clients: data })\r\n }\r\n\r\n const userResponse = await fetch('api/users/' + this.state.userId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (userResponse.ok) {\r\n const data = await userResponse.json()\r\n this.setState({ user: data })\r\n }\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n async removeClientUserLinks() {\r\n if (this.state.selectedClients.length === this.state.clients.length) {\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to remove all client user links?' +\r\n '\\n' +\r\n 'This will also remove the client user.'\r\n )\r\n ) {\r\n return\r\n }\r\n }\r\n\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'DELETE',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n this.state.selectedClients.forEach(client => {\r\n fetch(\r\n 'api/users/DeleteUser/' + client.id + '/' + this.state.userId,\r\n options\r\n )\r\n .then(res => {\r\n if (res.ok) {\r\n this.populateClientsData()\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Client User Link Successfully Removed.',\r\n severity: 'success'\r\n },\r\n isLoading: false\r\n })\r\n return Promise.resolve()\r\n } else {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Failed To Remove Client User Links - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n\r\n return Promise.reject(\r\n 'An error occurred (' + res.status + ').'\r\n )\r\n }\r\n })\r\n .catch(err => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Failed To Remove Client User Links - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n console.log(err)\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(UserClients)\r\n","export function phoneNumberValidation(data) {\r\n //+1-541-754-3010\r\n let result = data.match(\r\n /^\\+?([0-9]{1,2})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/\r\n )\r\n return result !== null ? true : false\r\n}\r\nexport function emailValidation(data) {\r\n let result = data.match(/^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i)\r\n return result !== null ? true : false\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { CardContent } from '@material-ui/core'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport {\r\n Button,\r\n TextField,\r\n IconButton,\r\n FormControlLabel,\r\n Checkbox\r\n} from '@material-ui/core'\r\nimport { Input, InputLabel, InputAdornment } from '@material-ui/core'\r\nimport { FormControl, Grid } from '@material-ui/core'\r\nimport { Visibility, VisibilityOff } from '@material-ui/icons'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { phoneNumberValidation } from '../components/shared/Helpers'\r\nimport { emailValidation } from '../components/shared/Helpers'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport {\r\n extractCreateShipment,\r\n extractSearchShipment,\r\n extractSeeCustoms,\r\n extractSeeAccounting,\r\n extractSeeBooking,\r\n extractSeeOrder,\r\n extractSeeContainers,\r\n extractCreateOrder\r\n} from '../utils/permissions'\r\nimport { getAppInfo, getClientData } from '../api/api'\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel'\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport { MenuItem, Select, Typography } from '@material-ui/core'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { getClientViewsList } from './shared/Views'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n textFieldFormFullWidth: {\r\n width: '100%'\r\n }\r\n})\r\n\r\nconst clientsPath = { pathname: `${ApplicationPaths.Clients}` }\r\nconst usersPath = { pathname: `${ApplicationPaths.Users}` }\r\n\r\nclass ClientDetails extends PureComponent {\r\n static displayName = ClientDetails.name\r\n\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n clientId:\r\n props.match.params.id !== null &&\r\n props.match.params.id.toLowerCase() !== 'new'\r\n ? props.match.params.id\r\n : null,\r\n isLoading: props.match.params.id !== null,\r\n reportAccessList: [],\r\n dashboardAccessList: [],\r\n displayNoReports: true,\r\n displayNoDashboards: true,\r\n isPosting: false,\r\n client: {},\r\n requiredFields: [],\r\n organization: null,\r\n showPassword: false,\r\n integrationPassword: '',\r\n isValidForm: true,\r\n isValidCustomerCode: true,\r\n errorTextCustomerCode: ' ',\r\n isValidName: true,\r\n errorTextName: '',\r\n isValidContactFirstName: true,\r\n errorTextContactFirstName: '',\r\n isValidContactLastName: true,\r\n errorTextContactLastName: '',\r\n isValidContactEmail: true,\r\n errorTextContactEmail: '',\r\n isValidContactPhoneNumber: true,\r\n errorTextContactPhoneNumber: '',\r\n isValidContactCountryCode: true,\r\n errorTextContactCountryCode: '',\r\n isValidCW1CompanyCode: true,\r\n errorTextCW1CompanyCode: '',\r\n isValidCW1BranchCode: true,\r\n errorTextCW1BranchCode: '',\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n },\r\n appInfo: {},\r\n searchShipment: true,\r\n expanded: 'panel1',\r\n clientViews: []\r\n }\r\n this.onSearch = this.onSearch.bind(this)\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n this.handleACCChange = this.handleACCChange.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n const { clientId } = this.state\r\n this.populateConfig()\r\n this.fetchClientViews()\r\n if (clientId) {\r\n this.fetchClientData(clientId)\r\n this.getClientReportsData(clientId)\r\n this.getClientDashboardsData(clientId)\r\n } else {\r\n this.getClientReportsData('new')\r\n this.getClientDashboardsData('new')\r\n }\r\n getAppInfo(clientId, data => {\r\n this.setState({ appInfo: data })\r\n if (!clientId) {\r\n const copy = JSON.parse(JSON.stringify(data))\r\n this.setState({\r\n client: {\r\n modulePermissionArray: copy.modulePermissionArray\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._asyncRequest) {\r\n this._asyncRequest.cancel()\r\n }\r\n }\r\n\r\n handleClickShowPassword = () => {\r\n this.setState({ showPassword: !this.state.showPassword })\r\n }\r\n\r\n handleMouseDown = event => {\r\n event.preventDefault()\r\n }\r\n\r\n handleCancel(event) {\r\n window.location.href = clientsPath.pathname\r\n }\r\n\r\n updateClientField = (value, key) => {\r\n this.setState(prevState => {\r\n let client = Object.assign({}, prevState.client)\r\n client[key] = value\r\n return { client }\r\n })\r\n }\r\n\r\n onSearch(e) {\r\n this.handleChange(e, 'searchShipment', false)\r\n }\r\n\r\n handleCheckboxChange = (event, field) => {\r\n const checked = event.target.checked\r\n\r\n switch (field) {\r\n case 'usesOpenTrack':\r\n this.updateClientField(checked, 'isOpenTrack')\r\n break\r\n case 'usesOpenTrackTracking':\r\n this.updateClientField(checked, 'isOpenTrackTracking')\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n handleBookingStepChange = (step, enabled) => {\r\n const { client } = this.state\r\n const bookingSteps = client?.bookingSteps\r\n ? JSON.parse(client.bookingSteps)\r\n : []\r\n const updatedSteps = bookingSteps.map(s => {\r\n if (s.index === step) {\r\n s.enabled = enabled\r\n }\r\n return s\r\n })\r\n\r\n this.updateClientField(JSON.stringify(updatedSteps), 'bookingSteps')\r\n }\r\n\r\n handleChange(event, field, isRequired) {\r\n this.setState({\r\n showFailAlert: false,\r\n showSuccessAlert: false\r\n })\r\n\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = true\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'customer-code':\r\n this.setState({\r\n errorTextCustomerCode: 'Customer Code ' + msgError,\r\n isValidCustomerCode: isValidField,\r\n isUpdatedClient: true\r\n })\r\n this.updateClientField(value, 'integrationCompanyCode')\r\n\r\n break\r\n\r\n case 'name':\r\n this.setState({\r\n errorTextName: 'Customer Name ' + msgError,\r\n isValidName: isValidField,\r\n isUpdatedClient: true\r\n })\r\n this.updateClientField(value, 'name')\r\n\r\n break\r\n\r\n case 'contact-first-name':\r\n this.setState({\r\n errorTextContactFirstName: 'First Name ' + msgError,\r\n isValidContactFirstName: isValidField,\r\n isUpdatedClient: true\r\n })\r\n this.updateClientField(value, 'contactFirstName')\r\n break\r\n\r\n case 'contact-last-name':\r\n this.setState({\r\n errorTextContactLastName: 'Last Name ' + msgError,\r\n isValidContactLastName: isValidField,\r\n isUpdatedClient: true\r\n })\r\n this.updateClientField(value, 'contactLastName')\r\n break\r\n\r\n case 'contact-email':\r\n if (isValidField) {\r\n var emailValid = emailValidation(value)\r\n\r\n if (!emailValid) {\r\n isValidField = false\r\n msgError = 'Email address is not valid.'\r\n isValidForm = false\r\n }\r\n } else {\r\n var _msgErrorEmail = 'Email'.concat(' ', msgError)\r\n msgError = _msgErrorEmail\r\n }\r\n\r\n this.setState({\r\n errorTextContactEmail: msgError,\r\n isValidContactEmail: isValidField,\r\n isUpdatedClient: true\r\n })\r\n\r\n this.updateClientField(value, 'contactEmail')\r\n break\r\n\r\n case 'contact-phone-number':\r\n if (isValidField) {\r\n var phoneValid = phoneNumberValidation(value)\r\n\r\n if (!phoneValid && value) {\r\n isValidField = false\r\n msgError = 'Phone number is not valid.'\r\n isValidForm = false\r\n }\r\n } else {\r\n var _msgErrorPhone = 'Phone'.concat(' ', msgError)\r\n msgError = _msgErrorPhone\r\n }\r\n\r\n this.setState({\r\n errorTextContactPhoneNumber: msgError,\r\n isValidContactPhoneNumber: isValidField,\r\n isUpdatedClient: true\r\n })\r\n\r\n this.updateClientField(value, 'contactPhoneNumber')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-line1':\r\n this.updateClientField(value, 'contactAddressLine1')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-country':\r\n this.updateClientField(value, 'contactAddressCountry')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-country-code':\r\n if (\r\n (value && value.length > 2) ||\r\n (value && value.length < 2)\r\n ) {\r\n isValidField = false\r\n msgError = 'Country code must be 2 characters.'\r\n isValidForm = false\r\n }\r\n\r\n this.setState({\r\n errorTextContactCountryCode: msgError,\r\n isValidContactCountryCode: isValidField,\r\n isUpdatedClient: true\r\n })\r\n\r\n this.updateClientField(value, 'contactAddressCountryCode')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-region':\r\n this.updateClientField(value, 'contactAddressRegion')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-city':\r\n this.updateClientField(value, 'contactAddressCity')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'contact-address-zip-code':\r\n this.updateClientField(value, 'contactAddressZipCode')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'cw1-company-code':\r\n if (\r\n (value && value.length > 3) ||\r\n (value && value.length < 3)\r\n ) {\r\n isValidField = false\r\n msgError = 'CW1 Company Code must be 3 characters.'\r\n isValidForm = false\r\n }\r\n\r\n this.setState({\r\n errorTextCW1CompanyCode: msgError,\r\n isValidCW1CompanyCode: isValidField,\r\n isUpdatedClient: true\r\n })\r\n\r\n this.updateClientField(value.toUpperCase(), 'cW1CompanyCode')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'cw1-branch-code':\r\n if (\r\n (value && value.length > 3) ||\r\n (value && value.length < 3)\r\n ) {\r\n isValidField = false\r\n msgError = 'CW1 Branch Code must be 3 characters.'\r\n isValidForm = false\r\n }\r\n\r\n this.setState({\r\n errorTextCW1BranchCode: msgError,\r\n isValidCW1BranchCode: isValidField,\r\n isUpdatedClient: true\r\n })\r\n\r\n this.updateClientField(value.toUpperCase(), 'cW1BranchCode')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'searchShipment':\r\n const searchShipment = this.state.searchShipment\r\n this.setState({ searchShipment: !searchShipment })\r\n break\r\n\r\n case 'client-view':\r\n this.updateClientField(value, 'clientViewId')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n case 'usesOpenTrack':\r\n this.updateClientField(value, 'isOpenTrack')\r\n this.setState({ isUpdatedClient: true })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm })\r\n }\r\n\r\n handleValidation() {\r\n var currentState = this.state\r\n let { requiredFields, client } = currentState\r\n let isValidForm = true\r\n\r\n requiredFields.map(function (item, i) {\r\n if (!client[item.orgValue]) {\r\n currentState[item.valid] = false\r\n currentState[item.errorText] = item.label + ' cannot be empty.'\r\n isValidForm = false\r\n }\r\n\r\n return isValidForm\r\n })\r\n\r\n this.setState(currentState)\r\n this.setState({ isValidForm: isValidForm })\r\n return isValidForm\r\n }\r\n\r\n handleModuleChange = (key, value) => {\r\n const { client } = this.state\r\n let permissions = null\r\n // check if key exists in array\r\n if (client.modulePermissionArray.some(e => e.propertyKey === key)) {\r\n permissions = client.modulePermissionArray?.map(permission => {\r\n if (permission.propertyKey === key) {\r\n permission['value'] = value\r\n }\r\n return permission\r\n })\r\n } else {\r\n permissions = [\r\n ...client.modulePermissionArray,\r\n {\r\n propertyKey: key,\r\n value: value\r\n }\r\n ]\r\n }\r\n\r\n this.setState({\r\n client: {\r\n ...client,\r\n modulePermissionArray: permissions\r\n }\r\n })\r\n }\r\n handleReportChange = (key, value) => {\r\n const { reportAccessList } = this.state\r\n const reports = reportAccessList?.map(report => {\r\n if (report.reportId === key) {\r\n report['isChecked'] = value\r\n }\r\n return report\r\n })\r\n\r\n this.setState({\r\n reportAccessList: reports\r\n })\r\n }\r\n handleDashboardChange = (key, value) => {\r\n const { dashboardAccessList } = this.state\r\n const dashboards = dashboardAccessList?.map(dashboard => {\r\n if (dashboard.dashboardId === key) {\r\n dashboard['isChecked'] = value\r\n }\r\n return dashboard\r\n })\r\n this.setState({\r\n dashboardAccessList: dashboards\r\n })\r\n }\r\n\r\n handleSubmit = async event => {\r\n const { clientId, client, organization } = this.state\r\n event.preventDefault()\r\n\r\n const isValid = this.handleValidation()\r\n\r\n if (isValid) {\r\n let isNew = true\r\n\r\n if (clientId && client.id) {\r\n isNew = false\r\n }\r\n this.saveClientData(client, isNew)\r\n }\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n renderSetUsersModuleAccessButton = () => {\r\n return (\r\n \r\n Set Client User Module Access\r\n \r\n )\r\n }\r\n\r\n handleSetUserModuleAccess = async () => {\r\n const { client } = this.state\r\n\r\n if (\r\n !window.confirm('Set all client user permissions for this client?')\r\n ) {\r\n return\r\n }\r\n\r\n const response = await fetch(\r\n 'api/clients/UpdateClientUsersModuleAccess',\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${await authService.getAccessToken()}`\r\n },\r\n body: JSON.stringify(client)\r\n }\r\n )\r\n if (!response.ok) {\r\n this.setState({\r\n alert: {\r\n open: true,\r\n success: false,\r\n message: 'Error updating client user module access'\r\n }\r\n })\r\n } else {\r\n this.setState({\r\n alert: {\r\n open: true,\r\n success: true,\r\n message: 'Client user module access updated successfully'\r\n }\r\n })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({ organization: data })\r\n }\r\n\r\n async fetchClientViews() {\r\n const views = await getClientViewsList()\r\n this.setState({ clientViews: views })\r\n }\r\n\r\n renderInput = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n disabled,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { client } = this.state\r\n const { classes } = this.props\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n if (required)\r\n this.state.requiredFields.push({\r\n orgValue,\r\n label,\r\n valid,\r\n errorText\r\n })\r\n\r\n return (\r\n \r\n \r\n this.handleChange(e, id, required)}\r\n {...params}\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n {\r\n this.handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n render() {\r\n const { backgroundColor, textColor, history } = this.props\r\n\r\n const { classes } = this.props\r\n const {\r\n organization,\r\n showPassword,\r\n client,\r\n clientId,\r\n appInfo,\r\n expanded,\r\n clientViews\r\n } = this.state\r\n const { integrationPassword } = client\r\n const { modulePermissionArray } = appInfo\r\n const bookingSteps = client?.bookingSteps\r\n ? JSON.parse(client.bookingSteps)\r\n : []\r\n\r\n const canEditCreateShipment = extractCreateShipment(\r\n modulePermissionArray\r\n )\r\n const canEditSearchShipment = extractSearchShipment(\r\n modulePermissionArray\r\n )\r\n const canEditSeeCustoms = extractSeeCustoms(modulePermissionArray)\r\n const canEditSeeAccounting = extractSeeAccounting(modulePermissionArray)\r\n const canEditSeeBookings = extractSeeBooking(modulePermissionArray)\r\n const canEditSeeOrders = extractSeeOrder(modulePermissionArray)\r\n const canEditSeeContainers = extractSeeContainers(modulePermissionArray)\r\n const canEditCreateOrder = extractCreateOrder(modulePermissionArray)\r\n const {\r\n reportAccessList,\r\n dashboardAccessList,\r\n displayNoDashboards,\r\n displayNoReports\r\n } = this.state\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#ffffff'\r\n const themeRGB =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#000000'\r\n const themeTextColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n return (\r\n
\r\n \r\n {this.renderAlert()}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n Customer\r\n Information\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'customer-code',\r\n 'Customer Code',\r\n 'Customer Code',\r\n 'integrationCompanyCode',\r\n true,\r\n false,\r\n 'isValidCustomerCode',\r\n 'errorTextCustomerCode'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'name',\r\n 'Customer Name',\r\n 'Customer Name',\r\n 'name',\r\n true,\r\n false,\r\n 'isValidName',\r\n 'errorTextName'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Address\r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'contact-address-line1',\r\n 'Street',\r\n 'Enter Street Name ',\r\n 'contactAddressLine1',\r\n false,\r\n false\r\n )}\r\n
\r\n \r\n {this.renderInput(\r\n 'contact-address-city',\r\n 'Town/City',\r\n 'Enter Town/City Name',\r\n 'contactAddressCity',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-address-region',\r\n 'Region/State',\r\n 'Enter Region/State',\r\n 'contactAddressRegion',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-address-zip-code',\r\n 'Zip Code',\r\n 'Enter ZipCode',\r\n 'contactAddressZipCode',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-address-country',\r\n 'Country Name',\r\n 'Enter Country',\r\n 'contactAddressCountry',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-address-country-code',\r\n 'Country Code (2 Characters)',\r\n 'Enter Country Code',\r\n 'contactAddressCountryCode',\r\n false,\r\n false,\r\n 'isValidContactCountryCode',\r\n 'errorTextContactCountryCode'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n Contact\r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'contact-first-name',\r\n 'First Name',\r\n 'First Name',\r\n 'contactFirstName',\r\n false,\r\n false,\r\n 'isValidContactFirstName',\r\n 'errorTextContactFirstName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-last-name',\r\n 'Last Name',\r\n 'Last Name',\r\n 'contactLastName',\r\n false,\r\n false,\r\n 'isValidContactLastName',\r\n 'errorTextContactLastName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-email',\r\n 'Email',\r\n 'xx@yyy.com',\r\n 'contactEmail',\r\n false,\r\n false,\r\n 'isValidContactEmail',\r\n 'errorTextContactEmail'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'contact-phone-number',\r\n 'Phone',\r\n '+1-541-754-3010',\r\n 'contactPhoneNumber',\r\n false,\r\n false,\r\n 'isValidContactPhoneNumber',\r\n 'errorTextContactPhoneNumber'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Booking Defaults\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'cw1-company-code',\r\n 'CW1 Company Code',\r\n 'Enter CW1 Company Code',\r\n 'cW1CompanyCode',\r\n false,\r\n false,\r\n 'isValidCW1CompanyCode',\r\n 'errorTextCW1CompanyCode'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'cw1-branch-code',\r\n 'CW1 Branch Code',\r\n 'Enter CW1 Branch Code',\r\n 'cW1BranchCode',\r\n false,\r\n false,\r\n 'isValidCW1BranchCode',\r\n 'errorTextCW1BranchCode'\r\n )}\r\n \r\n {bookingSteps.map(\r\n (\r\n step,\r\n index\r\n ) => {\r\n if (\r\n step.index !==\r\n 0 &&\r\n step.index !==\r\n 4\r\n ) {\r\n return (\r\n \r\n {\r\n this.handleBookingStepChange(\r\n step.index,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n checked={\r\n step.enabled\r\n }\r\n />\r\n }\r\n label={\r\n step.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 Module Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'ShipmentSearch',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSearchShipment\r\n }\r\n checked={\r\n !canEditSearchShipment\r\n ? false\r\n : extractSearchShipment(\r\n client.modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={\r\n 'Search Shipment'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'ShipmentCreate',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditCreateShipment\r\n }\r\n checked={\r\n !canEditCreateShipment\r\n ? false\r\n : extractCreateShipment(\r\n client.modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={\r\n 'Create Shipment'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Customs',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeCustoms\r\n }\r\n checked={\r\n !canEditSeeCustoms\r\n ? false\r\n : extractSeeCustoms(\r\n client.modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={\r\n 'Customs'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Accounting',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeAccounting\r\n }\r\n checked={\r\n !canEditSeeAccounting\r\n ? false\r\n : extractSeeAccounting(\r\n client.modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={\r\n 'Accounting'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Booking',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeBookings\r\n }\r\n checked={\r\n !canEditSeeBookings\r\n ? false\r\n : extractSeeBooking(\r\n client.modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={\r\n 'Bookings'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Order',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeOrders\r\n }\r\n checked={extractSeeOrder(\r\n client.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Orders'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'CreateOrder',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditCreateOrder\r\n }\r\n checked={extractCreateOrder(\r\n client.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Create Order'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Container',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeContainers\r\n }\r\n checked={extractSeeContainers(\r\n client.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Containers'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {this.renderSetUsersModuleAccessButton()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Report Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoReports && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {!displayNoReports &&\r\n reportAccessList?.map(\r\n report => (\r\n {\r\n this.handleReportChange(\r\n report.reportId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n report.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n report.reportName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Dashboard Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoDashboards && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {!displayNoDashboards &&\r\n dashboardAccessList?.map(\r\n dashboard => (\r\n {\r\n this.handleDashboardChange(\r\n dashboard.dashboardId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n dashboard.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n dashboard.dashboardName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n View Options\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n \r\n Client\r\n View\r\n \r\n \r\n this.handleChange(\r\n e,\r\n 'client-view',\r\n false\r\n )\r\n }\r\n >\r\n {clientViews?.map(\r\n (\r\n view,\r\n index\r\n ) => (\r\n \r\n {\r\n view.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\n {' '}\r\n Module Options\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleCheckboxChange(\r\n event,\r\n 'usesOpenTrack'\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n client?.isOpenTrack ||\r\n organization?.isOpenTrack ||\r\n false\r\n }\r\n disabled={\r\n organization?.isOpenTrack ||\r\n false\r\n }\r\n />\r\n }\r\n label={`Use OpenTrack Container Data ${\r\n organization?.isOpenTrack\r\n ? ' (Org Enabled)'\r\n : ''\r\n }`}\r\n />\r\n {\r\n this.handleCheckboxChange(\r\n event,\r\n 'usesOpenTrackTracking'\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n client?.isOpenTrackTracking ||\r\n organization?.isOpenTrackTracking ||\r\n false\r\n }\r\n disabled={\r\n organization?.isOpenTrackTracking ||\r\n false\r\n }\r\n />\r\n }\r\n label={`Use OpenTrack Tracking Link ${\r\n organization?.isOpenTrackTracking\r\n ? ' (Org Enabled)'\r\n : ''\r\n }`}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.handleCancel()\r\n }\r\n disabled={\r\n this.state.isPosting\r\n }\r\n >\r\n Cancel\r\n \r\n \r\n this.handleSubmit(e)\r\n }\r\n disabled={\r\n this.state.isPosting\r\n }\r\n >\r\n Save\r\n \r\n
\r\n
\r\n {clientId !== null ? (\r\n \r\n \r\n Manage Users\r\n \r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async fetchClientData(id) {\r\n getClientData(\r\n id,\r\n data => {\r\n this.setState({ client: data, isLoading: false })\r\n },\r\n () => {\r\n this.setState({ isLoading: false })\r\n }\r\n )\r\n }\r\n\r\n //reports & dashboards (get, save methods)\r\n\r\n //to get the client->reports\r\n async getClientReportsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/bireport/GetBIReports/' + id, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n var data = await response.json()\r\n if (data === null) {\r\n data = []\r\n }\r\n this.setState({\r\n reportAccessList: data\r\n })\r\n\r\n if (data.length !== 0) {\r\n this.setState({\r\n displayNoReports: false\r\n })\r\n }\r\n }\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n\r\n //to get the client->dashboards\r\n async getClientDashboardsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/bidashboard/GetBIDashboards/' + id, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n var data = await response.json()\r\n if (data === null) {\r\n data = []\r\n }\r\n this.setState({\r\n dashboardAccessList: data\r\n })\r\n if (data.length !== 0) {\r\n this.setState({\r\n displayNoDashboards: false\r\n })\r\n }\r\n }\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n //to save the client->reports\r\n async saveClientReportsData() {\r\n const token = await authService.getAccessToken()\r\n const { reportAccessList } = this.state\r\n const { clientId } = this.state\r\n let list = []\r\n reportAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n ClientId: clientId,\r\n ReportID: x.reportId,\r\n ReportName: x.reportName\r\n })\r\n }\r\n })\r\n let data = {\r\n ClientId: clientId,\r\n Reports: list\r\n }\r\n let errText = ''\r\n await fetch('api/clients/SaveClientBIReports', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // do nothing\r\n } else {\r\n errText = 'Code [' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving BI report data.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n //to save the client->dashboards\r\n async saveClientDashboardsData() {\r\n const token = await authService.getAccessToken()\r\n const { dashboardAccessList } = this.state\r\n const { clientId } = this.state\r\n let list = []\r\n dashboardAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n ClientId: clientId,\r\n DashboardID: x.dashboardId,\r\n DashboardName: x.dashboardName\r\n })\r\n }\r\n })\r\n let data = {\r\n ClientId: clientId,\r\n Dashboards: list\r\n }\r\n let errText = ''\r\n\r\n await fetch('api/clients/SaveClientBIDashboards', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // do nothing\r\n } else {\r\n errText = 'Code [' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving dashboard data.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving dashboard data.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n //reports & dashboards (get, save methods)\r\n\r\n async saveClientData(data, isNew) {\r\n this.setState({ isPosting: true })\r\n let errText = ''\r\n let url = isNew ? 'api/clients' : 'api/clients/' + data.id\r\n let _method = isNew ? 'POST' : 'PUT'\r\n const token = await authService.getAccessToken()\r\n await fetch(url, {\r\n method: _method,\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'Client information is saved.'\r\n return { alert }\r\n })\r\n results = response.json()\r\n } else {\r\n if (response.status === 409) {\r\n errText = `Client with company code ${data.integrationCompanyCode} already exists.`\r\n } else {\r\n errText = 'Code [' + response.status + ']'\r\n }\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n results = response.text()\r\n }\r\n return results\r\n })\r\n\r\n .then(d => {\r\n this.setState(\r\n {\r\n client: d.id ? d : data,\r\n clientId: d.id,\r\n isPosting: false,\r\n isValidForm: true\r\n },\r\n () => {\r\n this.saveClientReportsData()\r\n this.saveClientDashboardsData()\r\n }\r\n )\r\n\r\n if (isNew) {\r\n var path = clientsPath.pathname + '/' + d.id\r\n this.props.history.push(path)\r\n }\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false,\r\n isValidForm: false\r\n })\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(ClientDetails)\r\n","import React from 'react'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogContentText from '@material-ui/core/DialogContentText'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport ImportExportIcon from '@material-ui/icons/ImportExport'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\n\r\nexport default function UserUploadDialog(props) {\r\n const [open, setOpen] = React.useState(false)\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [isSuccess, setIsSuccess] = React.useState(false)\r\n const [isError, setIsError] = React.useState(false)\r\n const [errorMessage, setErrorMessage] = React.useState('')\r\n const [selectedFile, setSelectedFile] = React.useState(null)\r\n const [isSelected, setIsSelected] = React.useState(false)\r\n const { clientid, buttonTitle } = props\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true)\r\n }\r\n\r\n const handleClose = () => {\r\n setIsSelected(false)\r\n setSelectedFile(null)\r\n setOpen(false)\r\n }\r\n\r\n const handleSuccess = () => {\r\n setIsSuccess(true)\r\n setIsLoading(false)\r\n }\r\n\r\n const handleError = errorMessage => {\r\n setErrorMessage(errorMessage)\r\n setIsLoading(false)\r\n setIsError(true)\r\n }\r\n\r\n const changeHandler = event => {\r\n setSelectedFile(event.target.files[0])\r\n setIsSelected(true)\r\n }\r\n\r\n const handleSubmission = async () => {\r\n if (selectedFile === null) {\r\n setIsError(true)\r\n setErrorMessage('No file selected!')\r\n } else {\r\n setIsError(false)\r\n setIsSuccess(false)\r\n setErrorMessage('')\r\n setIsLoading(true)\r\n\r\n const formData = new FormData()\r\n formData.append('File', selectedFile)\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*'\r\n }\r\n const queryParams = clientid ? `?clientid=${clientid}` : ''\r\n\r\n const response = await fetch('api/users/ImportUsers' + queryParams, {\r\n headers: header,\r\n method: 'POST',\r\n body: formData\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n console.log(data)\r\n handleSuccess()\r\n } else {\r\n const data = await response.text()\r\n handleError(data)\r\n }\r\n \r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {buttonTitle}\r\n \r\n \r\n User Import File Select\r\n \r\n \r\n Accepted file format is .csv with headers - columns are\r\n 'FirstName', 'LastName', 'Email', 'ClientID (if not\r\n importing against current client)'\r\n \r\n \r\n {isLoading && }\r\n \r\n \r\n {isSelected ? (\r\n
\r\n

Filename: {selectedFile.name}

\r\n

Type: {selectedFile.type}

\r\n

\r\n Size:{' '}\r\n {parseInt(Number(selectedFile.size) / 1000)}kb\r\n

\r\n

\r\n Last Modified:{' '}\r\n {selectedFile.lastModifiedDate.toLocaleDateString()}\r\n

\r\n
\r\n ) : (\r\n

Select a file to show details

\r\n )}\r\n \r\n \r\n
\r\n {isSuccess && (\r\n \r\n Users successfully imported!\r\n \r\n )}\r\n {isError && (\r\n {\r\n setIsError(false)\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n {errorMessage}\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport { IconButton, Paper, Grid } from '@material-ui/core'\r\nimport { LinearProgress, Typography } from '@material-ui/core'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport DialogConfirm from './shared/DialogConfirm'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { Button } from '@material-ui/core'\r\nimport UserImportDialog from './shared/UserImportDialog'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\n\r\nconst clientUserPath = { pathname: `${ApplicationPaths.Users}` }\r\n\r\nclass ClientUsers extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n isLoading: false,\r\n users: [],\r\n user: {\r\n id: 0,\r\n email: '',\r\n clientId: props.match.params.clientId,\r\n notifyError: false,\r\n errMessage: ''\r\n },\r\n dialogOpen: false,\r\n alerts: {\r\n showSuccess: false,\r\n successMessage: ''\r\n },\r\n theme: props.theme,\r\n canImportUsers: false\r\n }\r\n this.showDeleteDialog = this.showDeleteDialog.bind(this)\r\n this.sendEmailConfirmEmail = this.sendEmailConfirmEmail.bind(this)\r\n this.populateClientUsersData = this.populateClientUsersData.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n const user = this.state.user\r\n if (user.clientId) {\r\n this.populateClientUsersData(user.clientId)\r\n }\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n this.setState({ canImportUsers: isSuperAdmin })\r\n }\r\n\r\n dataToDisplay(dataset) {\r\n if (dataset) {\r\n var UsersArray = []\r\n for (let i = 0; i < dataset.length; i++) {\r\n let usersArray = []\r\n var id = dataset[i].id\r\n var firstName = dataset[i].firstName\r\n var lastName = dataset[i].lastName\r\n var email = dataset[i].email\r\n var psaorganizationid = dataset[i].psaOrganizationId\r\n var emailConfirmed = dataset[i].emailConfirmed ? 'Yes' : 'No'\r\n var lastLoginDateString = dataset[i].lastLoginAsString\r\n var lastLogin =\r\n lastLoginDateString === ''\r\n ? 'n/a'\r\n : new Date(lastLoginDateString).toLocaleString()\r\n var lastActivityDateString = dataset[i].lastActivityAsString\r\n var lastActivity =\r\n lastActivityDateString === ''\r\n ? 'n/a'\r\n : new Date(lastActivityDateString).toLocaleString()\r\n\r\n usersArray.push(id)\r\n usersArray.push(firstName)\r\n usersArray.push(lastName)\r\n usersArray.push(email)\r\n usersArray.push(emailConfirmed)\r\n usersArray.push(lastLogin)\r\n usersArray.push(lastActivity)\r\n usersArray.push(psaorganizationid)\r\n\r\n UsersArray.push(usersArray)\r\n }\r\n return UsersArray\r\n }\r\n }\r\n\r\n showDeleteDialog(_user) {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.id = _user.id\r\n user.email = _user.email\r\n return { user }\r\n })\r\n this.setState({ dialogOpen: true })\r\n }\r\n\r\n async sendEmailConfirmEmail(userid) {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'POST',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n fetch('api/users/SendUserEmailConfirmation/' + userid, options)\r\n .then(res => {\r\n this.setState({ isLoading: false })\r\n if (res.ok) {\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = true\r\n alerts.successMessage =\r\n 'Email confirmation message resent.'\r\n return { alerts }\r\n })\r\n } else {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.id = userid\r\n user.errMessage =\r\n 'Sorry, there was an error resending email confirmation message.'\r\n return { user }\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.id = userid\r\n user.errMessage =\r\n 'Sorry, there was an error resending email confirmation message.'\r\n return { user }\r\n })\r\n console.log(err)\r\n })\r\n }\r\n\r\n handleActionsDialog = action => {\r\n if (action) {\r\n this.handleDelete()\r\n }\r\n this.setState({\r\n dialogOpen: !this.state.dialogOpen\r\n })\r\n }\r\n\r\n handleDelete = async event => {\r\n var user = this.state.user\r\n await this.deleteClientUser(user.clientId, user.id)\r\n }\r\n\r\n hideRowNotify() {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = false\r\n return { user }\r\n })\r\n }\r\n\r\n render() {\r\n const { user, canImportUsers } = this.state\r\n const { classes } = this.props\r\n const data = this.dataToDisplay(this.state.users)\r\n const options = {\r\n filter: false,\r\n viewColumns: false,\r\n print: false,\r\n download: false,\r\n selectableRowsOnClick: true,\r\n selectableRows: 'none',\r\n caseSensitive: false,\r\n rowsPerPageOptions: [10, 15, 25, 50, 100],\r\n filterType: 'dropdown',\r\n responsive: 'stacked',\r\n rowsPerPage: 10,\r\n searchOpen: false,\r\n customToolbar: () => {\r\n return (\r\n <>\r\n \r\n \r\n + Add Client User\r\n \r\n \r\n {canImportUsers ? (\r\n <>\r\n \r\n \r\n \r\n ) : null}\r\n \r\n )\r\n }\r\n }\r\n\r\n const headCells = [\r\n {\r\n id: 'id',\r\n label: 'Id',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n { id: 'firstName', label: 'First Name' },\r\n { id: 'lastName', label: 'Last Name' },\r\n {\r\n id: 'email',\r\n label: 'Email',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var id = tableMeta.rowData[0]\r\n var email = tableMeta.rowData[3]\r\n return (\r\n \r\n {email}\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n id: 'emailConfirmed',\r\n label: 'Email Confirmed',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (\r\n <>\r\n {value !== 'Yes' ? (\r\n <>\r\n {value}{' '}\r\n \r\n Resend Email Confirmation\r\n Message\r\n \r\n }\r\n >\r\n \r\n this.sendEmailConfirmEmail(\r\n tableMeta.rowData[0]\r\n )\r\n }\r\n >\r\n Resend\r\n \r\n \r\n \r\n ) : (\r\n value\r\n )}\r\n \r\n )\r\n }\r\n }\r\n },\r\n { id: 'lastLogin', label: 'Last Login' },\r\n { id: 'lastActivity', label: 'Last Activity' },\r\n {\r\n id: 'email',\r\n label: 'Email',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n id: 'psaOrganizationId',\r\n label: 'PSA Organization Id',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n id: 'actions',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var email = tableMeta.rowData[3]\r\n var _user = {\r\n id: tableMeta.rowData[0],\r\n email: email\r\n }\r\n\r\n return (\r\n
\r\n this.showDeleteDialog(_user)}\r\n >\r\n \r\n \r\n \r\n
\r\n \r\n {this.state.user.email}\r\n \r\n \r\n
\r\n )\r\n }\r\n }\r\n },\r\n {\r\n id: 'result_action',\r\n label: '',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (\r\n
\r\n {this.state.user.notifyError &&\r\n this.state.user.id === tableMeta.rowData[0] ? (\r\n \r\n this.hideRowNotify()}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n )\r\n }\r\n }\r\n }\r\n ]\r\n\r\n return this.state.isLoading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async populateClientUsersData(clientId) {\r\n this.setState({ isLoading: true })\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetUsersForClient/' + clientId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ users: data })\r\n }\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n async deleteClientUser(clientId, userId) {\r\n this.setState({ isPosting: true })\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'DELETE',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n fetch('api/users/DeleteUser/' + clientId + '/' + userId, options)\r\n .then(res => {\r\n if (res.ok) {\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = true\r\n alerts.successMessage = 'User was deleted.'\r\n return { alerts }\r\n })\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user = { id: 0, email: '', clientId: clientId }\r\n return { user }\r\n })\r\n this.setState({ isPosting: false, clientId: clientId })\r\n\r\n this.populateClientUsersData(clientId)\r\n\r\n return Promise.resolve('User (' + userId + ') deleted.')\r\n } else {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.errMessage =\r\n 'Sorry, there was an error while deleting this client.'\r\n return { user }\r\n })\r\n this.setState({ isPosting: false })\r\n\r\n return Promise.reject(\r\n 'An error occurred (' + res.status + ').'\r\n )\r\n }\r\n })\r\n .catch(err => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.errMessage =\r\n 'Sorry, there was an error while deleting this client.'\r\n return { user }\r\n })\r\n\r\n this.setState({ isPosting: false })\r\n console.log(err)\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(ClientUsers)\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { TextField, Paper, Grid } from '@material-ui/core'\r\nimport { LinearProgress, Typography } from '@material-ui/core'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { Button, IconButton } from '@material-ui/core'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport MaterialTable from 'material-table'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle'\r\nimport AutorenewIcon from '@material-ui/icons/Autorenew'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { Checkbox } from '@material-ui/core'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle\r\n} from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport { alignClientUserModuleAccess } from '../../src/api/api'\r\nimport { CardContent } from '@material-ui/core'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n },\r\n clientSelectDialogButton: {\r\n width: '50px'\r\n }\r\n})\r\n\r\nconst clientUserPath = { pathname: `${ApplicationPaths.Users}` }\r\n\r\nclass OrgUsers extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n isLoading: false,\r\n users: [],\r\n user: null,\r\n selectedUsers: [],\r\n clients: [],\r\n userClients: [],\r\n filteredClients: [],\r\n notificationAlert: {\r\n open: false,\r\n message: 'test',\r\n severity: 'success'\r\n },\r\n organization: null,\r\n dialogOpen: false,\r\n theme: props.theme,\r\n canImportUsers: false,\r\n isSuperAdmin: false\r\n }\r\n this.showDeleteDialog = this.showDeleteDialog.bind(this)\r\n this.sendEmailConfirmEmail = this.sendEmailConfirmEmail.bind(this)\r\n this.populateOrgUsersData = this.populateOrgUsersData.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n this.populateOrgUsersData()\r\n this.populateConfig()\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n this.setState({ isSuperAdmin: isSuperAdmin })\r\n }\r\n\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data\r\n })\r\n }\r\n\r\n dataToDisplay(dataset) {\r\n if (dataset) {\r\n dataset = dataset.map(function (user) {\r\n var lastLoginDateString = user.lastLoginAsString\r\n var lastLogin =\r\n lastLoginDateString === ''\r\n ? 'n/a'\r\n : new Date(lastLoginDateString).toLocaleString()\r\n var lastActivityDateString = user.lastActivityAsString\r\n var lastActivity =\r\n lastActivityDateString === ''\r\n ? 'n/a'\r\n : new Date(lastActivityDateString).toLocaleString()\r\n return {\r\n ...user,\r\n emailConfirmed: user.emailConfirmed ? 'Yes' : 'No',\r\n lastLogin: lastLogin,\r\n lastActivity: lastActivity\r\n }\r\n })\r\n return dataset\r\n }\r\n }\r\n\r\n showDeleteDialog(_user) {\r\n this.setState({ dialogOpen: true })\r\n }\r\n\r\n async sendEmailConfirmEmail(userid) {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'POST',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n fetch('api/users/SendUserEmailConfirmation/' + userid, options)\r\n .then(res => {\r\n this.setState({ isLoading: false })\r\n if (res.ok) {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message: 'Email Confirmation Message Sent.',\r\n severity: 'success'\r\n }\r\n })\r\n } else {\r\n }\r\n })\r\n .catch(err => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message: 'Email Confirmation Message Failed To Send.',\r\n severity: 'error'\r\n }\r\n })\r\n console.log(err)\r\n })\r\n }\r\n\r\n async saveClientUserDetails() {\r\n const { selectedUsers } = this.state\r\n const selectedClients = this.state.clients.filter(\r\n client => client.checked\r\n )\r\n let newClientCount = selectedClients.length\r\n\r\n if (selectedUsers.length === 1) {\r\n const userClientIds = selectedUsers[0].clientIds\r\n newClientCount = selectedClients.length - userClientIds.length\r\n }\r\n\r\n if (\r\n !window.confirm(\r\n 'Are you sure you want to add ' +\r\n selectedUsers.length +\r\n ' user(s) to ' +\r\n newClientCount +\r\n ' client(s)?'\r\n )\r\n ) {\r\n return\r\n }\r\n\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const data = []\r\n\r\n selectedClients.forEach(client => {\r\n selectedUsers.forEach(user => {\r\n data.push({\r\n clientId: client.id,\r\n userId: user.id\r\n })\r\n })\r\n })\r\n\r\n fetch('api/users/AddClientUsers', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, *',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message: 'User(s) Successfully Added To Client(s).',\r\n severity: 'success'\r\n },\r\n isLoading: false\r\n })\r\n this.populateOrgUsersData()\r\n } else {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'An Error Occurred Adding User(s) To Client(s) - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n console.log(response.text())\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'An Error Occurred Adding User(s) To Client(s) - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n console.log(error)\r\n })\r\n }\r\n\r\n async populateUserClientsData() {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const clientsResponse = await fetch(\r\n 'api/clients?userId=' + this.state.userId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (clientsResponse.ok) {\r\n const data = await clientsResponse.json()\r\n this.setState({ userClients: data })\r\n }\r\n\r\n const userResponse = await fetch('api/users/' + this.state.userId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (userResponse.ok) {\r\n const data = await userResponse.json()\r\n this.setState({ user: data })\r\n }\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n handleClientSelectChange = event => {\r\n const id = event.target.id\r\n const checked = event.target.checked\r\n this.setState(prevState => {\r\n let clients = [...prevState.clients]\r\n clients.forEach(client => {\r\n if (client.id === id) {\r\n client.checked = checked\r\n }\r\n })\r\n return { clients }\r\n })\r\n }\r\n\r\n setClientsCheckedValue(isChecked) {\r\n this.setState(prevState => {\r\n let clients = [...prevState.clients]\r\n clients.forEach(client => {\r\n client.checked = isChecked\r\n })\r\n return { clients }\r\n })\r\n }\r\n\r\n setAllClientsUnchecked = () => {\r\n this.setClientsCheckedValue(false)\r\n }\r\n\r\n setAllClientsChecked = () => {\r\n this.setClientsCheckedValue(true)\r\n }\r\n\r\n downloadCSV = async rowData => {\r\n var selectedUserIds = rowData.map(user => user.id)\r\n\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetClientAndDownloadCSV',\r\n {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${token}`\r\n },\r\n body: JSON.stringify(selectedUserIds)\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const blob = await response.blob()\r\n const url = window.URL.createObjectURL(blob)\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.download = 'data.csv'\r\n link.click()\r\n } else {\r\n console.error('Error downloading CSV file. Please try again later.')\r\n }\r\n }\r\n\r\n render() {\r\n const { organization, clients, selectedUsers, filteredClients } =\r\n this.state\r\n const { classes } = this.props\r\n const tableTheme = createTheme()\r\n const data = this.dataToDisplay(this.state.users)\r\n\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n\r\n let headCells = [\r\n { field: 'id', title: 'Id', hidden: true },\r\n { field: 'firstName', title: 'First Name' },\r\n { field: 'lastName', title: 'Last Name' },\r\n {\r\n field: 'email',\r\n title: 'Email'\r\n },\r\n {\r\n field: 'clientCount',\r\n title: 'Clients'\r\n },\r\n {\r\n field: 'emailConfirmed',\r\n title: 'Email Confirmed'\r\n },\r\n { field: 'lastLogin', title: 'Last Login' },\r\n { field: 'lastActivity', title: 'Last Activity' }\r\n ]\r\n\r\n headCells = headCells.map(headCell => {\r\n return {\r\n ...headCell,\r\n render: params => {\r\n if (headCell.field === 'clientCount') {\r\n return (\r\n \r\n {params.clientCount}\r\n \r\n )\r\n } else if (headCell.field === 'emailConfirmed') {\r\n return (\r\n <>\r\n {params.emailConfirmed !== 'Yes' ? (\r\n <>\r\n {params.emailConfirmed}{' '}\r\n \r\n Resend Email Confirmation\r\n Message\r\n \r\n }\r\n >\r\n \r\n this.sendEmailConfirmEmail(\r\n params.id\r\n )\r\n }\r\n >\r\n Resend\r\n \r\n \r\n \r\n ) : (\r\n params.emailConfirmed\r\n )}\r\n \r\n )\r\n } else {\r\n return params[headCell.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n let tableActions = [\r\n {\r\n icon: () => {\r\n return (\r\n \r\n Delete\r\n \r\n )\r\n },\r\n onClick: (event, rowData) => {\r\n if (\r\n window.confirm(\r\n 'Are you sure you want to delete ' +\r\n rowData.length +\r\n ' client user(s)? This will remove them from all clients.'\r\n )\r\n ) {\r\n this.deleteClientUsers(rowData)\r\n }\r\n },\r\n tooltip: 'Delete User(s)'\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n Add Clients\r\n \r\n )\r\n },\r\n onClick: (event, rowData) => {\r\n if (rowData.length === 1) {\r\n const userClientIds = rowData[0].clientIds\r\n if (userClientIds.length !== 0) {\r\n this.setState(prevState => {\r\n let clients = [...prevState.clients]\r\n clients.forEach(client => {\r\n if (userClientIds.includes(client.id)) {\r\n client.disabled = true\r\n client.checked = true\r\n } else {\r\n client.disabled = false\r\n client.checked = false\r\n }\r\n })\r\n return { clients }\r\n })\r\n }\r\n }\r\n this.setState(\r\n {\r\n selectedUsers: rowData\r\n },\r\n () => {\r\n this.setState({ dialogOpen: true })\r\n }\r\n )\r\n },\r\n tooltip: 'Add Client(s) to User(s)'\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n Export To CSV\r\n \r\n )\r\n },\r\n onClick: (e, rowData) => {\r\n this.downloadCSV(rowData)\r\n },\r\n tooltip: 'Export Client User Data To CSV'\r\n }\r\n ]\r\n\r\n if (this.state.isSuperAdmin) {\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n },\r\n onClick: (e, rowData) => {\r\n alignClientUserModuleAccess(\r\n results => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Module Access Aligned Successfully.',\r\n severity: 'success'\r\n }\r\n })\r\n console.log(results)\r\n },\r\n () => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Error Aligning Module Access - Please Contact Support.',\r\n severity: 'error'\r\n }\r\n })\r\n }\r\n )\r\n },\r\n tooltip: 'Align Client User Module Access',\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n return (\r\n \r\n {this.state.notificationAlert.open ? (\r\n {\r\n this.setState({\r\n notificationAlert: {\r\n open: false,\r\n message: '',\r\n severity: 'success'\r\n }\r\n })\r\n }}\r\n open={this.state.notificationAlert.open}\r\n >\r\n {this.state.notificationAlert.message}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n (\r\n \r\n )\r\n )\r\n }}\r\n actions={tableActions}\r\n options={{\r\n headerStyle: {\r\n backgroundColor:\r\n backgroundColor,\r\n color: textColor\r\n },\r\n filtering: false,\r\n maxBodyHeight:\r\n 'calc(100vh - 348px)',\r\n pageSizeOptions: [\r\n 25, 50, 75\r\n ],\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: false,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n selection: true,\r\n pagination: {\r\n rowsPerPage:\r\n 'Rows per page:',\r\n displayRows:\r\n 'off'\r\n },\r\n exportButton: {\r\n csv: true\r\n },\r\n exportFileName:\r\n 'ExportClientUsers_' +\r\n Date.now(),\r\n exportAllData: true\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.setState({ dialogOpen: false })}\r\n >\r\n Select Client(s)\r\n \r\n \r\n {\r\n <>\r\n }\r\n onClick={this.setAllClientsChecked}\r\n >\r\n Select All\r\n \r\n  \r\n }\r\n onClick={this.setAllClientsUnchecked}\r\n >\r\n Unselect All\r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n {\r\n // need to filter the addresses based on the input\r\n const value = e.target.value\r\n const filteredClients = clients.filter(\r\n client => {\r\n return client.name\r\n .toLowerCase()\r\n .includes(value.toLowerCase())\r\n }\r\n )\r\n this.setState({ filteredClients })\r\n }}\r\n placeholder={'Enter client name..'}\r\n />\r\n
\r\n {filteredClients.map(client => (\r\n \r\n {' '}\r\n \r\n
\r\n ))}\r\n \r\n
\r\n \r\n }\r\n onClick={() => {\r\n this.setState({ dialogOpen: false })\r\n this.setAllClientsUnchecked()\r\n }}\r\n >\r\n Cancel\r\n \r\n  \r\n }\r\n onClick={async () => {\r\n await this.saveClientUserDetails()\r\n this.setState({ dialogOpen: false })\r\n }}\r\n >\r\n Add {selectedUsers.length > 1 ? 'Users' : 'User'} to{' '}\r\n {clients.filter(client => client.checked).length > 1\r\n ? 'Clients'\r\n : 'Client'}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n async populateOrgUsersData() {\r\n this.setState({ isLoading: true })\r\n const token = await authService.getAccessToken()\r\n const clientUsersResponse = await fetch(\r\n 'api/users/GetClientUsersForOrg',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (clientUsersResponse.ok) {\r\n const data = await clientUsersResponse.json()\r\n this.setState({ users: data })\r\n } else {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Error While Retrieving Client Users - Please Contact Support.',\r\n severity: 'error'\r\n }\r\n })\r\n }\r\n\r\n const clientsResponse = await fetch(\r\n 'api/clients/getclientslist?module=orgusers',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (clientsResponse.ok) {\r\n const data = await clientsResponse.json()\r\n // need to extend the client object to include a 'checked' and 'disabled' property\r\n data.forEach(client => {\r\n client.checked = false\r\n client.disabled = false\r\n })\r\n this.setState({\r\n clients: data,\r\n filteredClients: data\r\n })\r\n } else {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Error While Retrieving Available Clients - Please Contact Support.',\r\n severity: 'error'\r\n }\r\n })\r\n }\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n async deleteClientUsers(clientUsers) {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const userIds = clientUsers.map(user => user.id)\r\n\r\n const options = {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(userIds)\r\n }\r\n\r\n fetch('api/users/DeleteClientUsers', options)\r\n .then(res => {\r\n if (res.ok) {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message: 'Client Users Successfully Deleted.',\r\n severity: 'success'\r\n },\r\n isLoading: false\r\n })\r\n\r\n this.populateOrgUsersData()\r\n\r\n return Promise.resolve('Client Users Deleted.')\r\n } else {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Failed To Delete Client Users - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n\r\n return Promise.reject(\r\n 'An error occurred (' + res.status + ').'\r\n )\r\n }\r\n })\r\n .catch(err => {\r\n this.setState({\r\n notificationAlert: {\r\n open: true,\r\n message:\r\n 'Failed To Delete Client Users - Please Contact Support.',\r\n severity: 'error'\r\n },\r\n isLoading: false\r\n })\r\n console.log(err)\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(OrgUsers)\r\n","import React, { PureComponent, useState } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport {\r\n Card,\r\n CardContent,\r\n FormControlLabel,\r\n Checkbox,\r\n Tooltip\r\n} from '@material-ui/core'\r\nimport { CardMedia, CardActions, CardActionArea } from '@material-ui/core'\r\nimport {\r\n Grid,\r\n TextField,\r\n Input,\r\n FormControl,\r\n LinearProgress,\r\n InputLabel,\r\n InputAdornment\r\n} from '@material-ui/core'\r\nimport { MenuItem, Select, Typography } from '@material-ui/core'\r\nimport { IconButton, Button } from '@material-ui/core'\r\nimport { Visibility, VisibilityOff } from '@material-ui/icons'\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { Alert } from '@material-ui/lab'\r\nimport { phoneNumberValidation } from '../components/shared/Helpers'\r\nimport { emailValidation } from '../components/shared/Helpers'\r\nimport CardTitle from './shared/CardTitle'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline'\r\nimport { CircularProgress } from '@mui/material'\r\nimport {\r\n extractCreateShipment,\r\n extractSearchShipment,\r\n extractSeeCustoms,\r\n extractSeeAccounting,\r\n extractSeeBooking,\r\n extractSeeOrder,\r\n extractSeeContainers,\r\n extractCreateOrder\r\n} from '../utils/permissions'\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel'\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\n\r\nconst shipmentServiceOptions = [\r\n {\r\n id: 1,\r\n value: 'NORMANHK',\r\n label: 'Norman HK'\r\n },\r\n {\r\n id: 2,\r\n value: 'WISEGRID',\r\n label: 'WiseGrid'\r\n }\r\n]\r\n\r\nconst nextSyncDateOptions = [\r\n {\r\n id: 1,\r\n value: 'PREVSYNC',\r\n label: 'No Change'\r\n },\r\n {\r\n id: 2,\r\n value: '1HOUR',\r\n label: '1 Hour'\r\n },\r\n {\r\n id: 3,\r\n value: '1DAY',\r\n label: '1 Day'\r\n },\r\n {\r\n id: 4,\r\n value: '1WEEK',\r\n label: '1 Week'\r\n },\r\n {\r\n id: 5,\r\n value: '1MONTH',\r\n label: '1 Month'\r\n },\r\n {\r\n id: 6,\r\n value: '1YEAR',\r\n label: '1 Year'\r\n },\r\n {\r\n id: 7,\r\n value: '2YEARS',\r\n label: '2 Years'\r\n },\r\n {\r\n id: 8,\r\n value: 'CUSTOM',\r\n label: 'Custom Date'\r\n }\r\n]\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass OrganizationDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n reportAccessList: [],\r\n dashboardAccessList: [],\r\n displayNoReports: false,\r\n displayNoDashboards: false,\r\n organization: [],\r\n dateFormatOptions: [],\r\n user: [],\r\n orgId: '',\r\n groupdata: {},\r\n updLogo: false,\r\n updData: true,\r\n files: [],\r\n showPassword: false,\r\n eAdaptorPassword: '',\r\n isValidOrgName: true,\r\n errorTextOrgName: '',\r\n isValidOrgAppName: true,\r\n isValidOrgLinkName: true,\r\n isValidOrgLinkUrl: true,\r\n isValidOrgLink2Name: true,\r\n isValidOrgLink2Url: true,\r\n isValidOrgLink3Name: true,\r\n isValidOrgLink3Url: true,\r\n isValidOrgLink4Name: true,\r\n isValidOrgLink4Url: true,\r\n isValidOrgLink5Name: true,\r\n isValidOrgLink5Url: true,\r\n isValidBannerText: true,\r\n errorTextOrgAppName: '',\r\n errorTextLinkName: '',\r\n errorTextLinkUrl: '',\r\n errorTextLink2Name: '',\r\n errorTextLink2Url: '',\r\n errorTextLink3Name: '',\r\n errorTextLink3Url: '',\r\n errorTextLink4Name: '',\r\n errorTextLink4Url: '',\r\n errorTextLink5Name: '',\r\n errorTextLink5Url: '',\r\n errorTextEmail: '',\r\n errorTextSubDomain: '',\r\n errorTextPhone: '',\r\n errorTextBannerText: '',\r\n isValidSubDomain: true,\r\n isValidEmail: true,\r\n isValidPhone: true,\r\n isValidStreet: true,\r\n errorTextStreet: '',\r\n isValidForm: true,\r\n isPosting: false,\r\n isLoading: true,\r\n isSuperAdmin: false,\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n },\r\n searchShipment: true,\r\n expanded: 'panel1',\r\n openSyncHistoryView: false,\r\n syncHistoryData: '',\r\n syncStatusRefreshing: false,\r\n orgModuleSyncConfigs: [],\r\n orgDateFormat: null,\r\n syncFromDateSelectorOpen: false,\r\n currentSyncConfigId: null,\r\n syncFromDialogOpen: false,\r\n settingNewClientSync: false\r\n }\r\n\r\n this.onSearch = this.onSearch.bind(this)\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n this.handleSyncConfigChange = this.handleSyncConfigChange.bind(this)\r\n this.handleOrgSyncConfigChange = this.handleOrgSyncConfigChange.bind(this)\r\n this.populateOrganizationData = this.populateOrganizationData.bind(this)\r\n this.setOrgDateFormatFromOptions = this.setOrgDateFormatFromOptions.bind(this)\r\n this.handleACCChange = this.handleACCChange.bind(this)\r\n this.handleSyncRefreshClick = this.handleSyncRefreshClick.bind(this)\r\n this.updateModuleSyncConfigs = this.updateModuleSyncConfigs.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n await this.populateDateFormatOptions()\r\n await this.populateOrganizationData()\r\n const isSuperAdmin = await authService.isSuperAdmin()\r\n this.setState({ isSuperAdmin })\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n handleClickShowPassword = () => {\r\n this.setState({ ...this.state, showPassword: !this.state.showPassword })\r\n }\r\n\r\n handleMouseDown = event => {\r\n event.preventDefault()\r\n }\r\n\r\n onSearch(e) {\r\n this.handleChange(e, 'searchShipment', false)\r\n }\r\n\r\n handleSyncRefreshClick = async () => {\r\n this.setState({\r\n syncStatusRefreshing: true\r\n }, async () => {\r\n await this.populateOrganizationData()\r\n })\r\n this.setState({\r\n syncStatusRefreshing: false\r\n })\r\n }\r\n\r\n updateOrganizationField = (value, key) => {\r\n this.setState(prevState => {\r\n let organization = Object.assign({}, prevState.organization)\r\n organization[key] = value\r\n return { organization }\r\n })\r\n }\r\n\r\n updateOrganizationSyncConfigField = (value, key) => {\r\n if (key === 'minimumSyncDate') {\r\n // convert to UTC with time zero'ed out\r\n var newMinSyncDate = dateFns.moment(value).startOf('day')\r\n value = dateFns.moment.utc(newMinSyncDate)\r\n }\r\n\r\n this.setState(prevState => {\r\n let organization = Object.assign({}, prevState.organization)\r\n organization.syncConfig[key] = value\r\n return { organization }\r\n })\r\n }\r\n\r\n handleChange2(event, field, isRequired) {\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = true\r\n let updData = true\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'Organization name cannot be empty.'\r\n }\r\n switch (field) {\r\n case 'bigroupId':\r\n this.setState({\r\n errorTextOrgName: msgError,\r\n isValidOrgName: isValidField\r\n })\r\n this.updateOrganizationField2(value, 'groupId')\r\n\r\n break\r\n case 'bigroupName':\r\n this.setState({\r\n errorTextOrgName: msgError,\r\n isValidOrgName: isValidField\r\n })\r\n this.updateOrganizationField2(value, 'groupName')\r\n\r\n break\r\n }\r\n }\r\n updateOrganizationField2 = (value, key) => {\r\n this.setState(prevState => {\r\n let groupdata = Object.assign({}, prevState.groupdata)\r\n groupdata[key] = value\r\n return { groupdata }\r\n })\r\n }\r\n\r\n handleSyncConfigChange = (id, key, value) => {\r\n \r\n var updateState = true\r\n const { minimumSyncDate } = this.state.organization.syncConfig\r\n\r\n switch (key)\r\n // if it's nextSyncFromDate, we need to convert the value to a date\r\n {\r\n case 'nextSyncFromDate':\r\n // get local date\r\n var newSyncFromDateLocal = dateFns.moment(new Date())\r\n // convert to utc\r\n var newSyncFromDate = dateFns.moment.utc(newSyncFromDateLocal)\r\n\r\n switch (value) {\r\n case 'PREVSYNC':\r\n newSyncFromDate = null\r\n updateState = false\r\n break\r\n case '1HOUR':\r\n newSyncFromDate = newSyncFromDate.subtract(1, 'hours')\r\n break\r\n case '1DAY':\r\n newSyncFromDate = newSyncFromDate.subtract(1, 'days')\r\n break\r\n case '1WEEK':\r\n newSyncFromDate = newSyncFromDate.subtract(1, 'weeks')\r\n break\r\n case '1MONTH':\r\n newSyncFromDate = newSyncFromDate.subtract(1, 'months')\r\n break\r\n case '1YEAR':\r\n newSyncFromDate = newSyncFromDate.subtract(1, 'years')\r\n break\r\n case '2YEARS':\r\n newSyncFromDate = newSyncFromDate.subtract(2, 'years')\r\n break\r\n case 'CUSTOM':\r\n // prompt the user to select a new sync from date using a dialog\r\n this.setState({\r\n currentSyncConfigId: id\r\n }, () => {\r\n this.setState({\r\n syncFromDateSelectorOpen: true\r\n })\r\n })\r\n updateState = false\r\n default:\r\n break\r\n }\r\n if (minimumSyncDate && updateState) {\r\n // if the value is less than the minimum sync date, set it to the minimum sync date\r\n if (newSyncFromDate.isBefore(minimumSyncDate)) {\r\n newSyncFromDate = minimumSyncDate\r\n }\r\n value = newSyncFromDate\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (updateState) {\r\n this.setState(prevState => {\r\n let orgModuleSyncConfigs = prevState.orgModuleSyncConfigs.map(\r\n config => {\r\n if (config.syncId === id || !id) {\r\n // spread and update the correct value\r\n let updatedConfig = { ...config, [key]: value }\r\n if (key === 'nextSyncFromDate') {\r\n // update watermarkdate as well\r\n updatedConfig['watermarkDate'] = value\r\n }\r\n return updatedConfig\r\n }\r\n return config\r\n }\r\n )\r\n return { orgModuleSyncConfigs }\r\n })\r\n }\r\n }\r\n\r\n handleOrgSyncConfigChange(event, field) {\r\n switch (field) {\r\n case 'minimumSyncDate':\r\n this.updateOrganizationSyncConfigField(event, 'minimumSyncDate')\r\n break\r\n }\r\n }\r\n\r\n handleChange(event, field, isRequired) {\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = true\r\n let updData = true\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'Organization name cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'org-details-name':\r\n this.setState({\r\n errorTextOrgName: msgError,\r\n isValidOrgName: isValidField\r\n })\r\n this.updateOrganizationField(value, 'name')\r\n\r\n break\r\n\r\n case 'org-details-app-name':\r\n this.setState({\r\n errorTextOrgAppName: msgError,\r\n isValidOrgAppName: isValidField\r\n })\r\n this.updateOrganizationField(value, 'organizationAppName')\r\n\r\n break\r\n\r\n case 'org-details-custom-link-name':\r\n this.setState({\r\n errorTextLinkName: msgError,\r\n isValidOrgLinkName: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLinkName'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link-url':\r\n this.setState({\r\n errorTextLinkUrl: msgError,\r\n isValidOrgLinkUrl: isValidField\r\n })\r\n this.updateOrganizationField(value, 'organizationCustomLinkUrl')\r\n\r\n break\r\n\r\n case 'org-details-custom-link2-name':\r\n this.setState({\r\n errorTextLink2Name: msgError,\r\n isValidOrgLink2Name: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink2Name'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link2-url':\r\n this.setState({\r\n errorTextLink2Url: msgError,\r\n isValidOrgLink2Url: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink2Url'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link3-name':\r\n this.setState({\r\n errorTextLink3Name: msgError,\r\n isValidOrgLink3Name: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink3Name'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link3-url':\r\n this.setState({\r\n errorTextLink3Url: msgError,\r\n isValidOrgLink3Url: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink3Url'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link4-name':\r\n this.setState({\r\n errorTextLink4Name: msgError,\r\n isValidOrgLink4Name: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink4Name'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link4-url':\r\n this.setState({\r\n errorTextLink4Url: msgError,\r\n isValidOrgLink4Url: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink4Url'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link5-name':\r\n this.setState({\r\n errorTextLink5Name: msgError,\r\n isValidOrgLink5Name: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink5Name'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-custom-link5-url':\r\n this.setState({\r\n errorTextLink5Url: msgError,\r\n isValidOrgLink5Url: isValidField\r\n })\r\n this.updateOrganizationField(\r\n value,\r\n 'organizationCustomLink5Url'\r\n )\r\n\r\n break\r\n\r\n case 'org-details-subdomain':\r\n this.setState({\r\n errorTextSubDomain: msgError,\r\n isValidSubDomain: isValidField\r\n })\r\n this.updateOrganizationField(value, 'subdomain')\r\n break\r\n\r\n case 'org-details-theme':\r\n this.updateOrganizationField(value, 'colorThemeRGB')\r\n break\r\n\r\n case 'org-details-headertheme':\r\n this.updateOrganizationField(value, 'colorThemeTextRGB')\r\n break\r\n case 'org-details-primarytheme':\r\n this.updateOrganizationField(value, 'colorThemePrimaryRGB')\r\n break\r\n case 'org-details-secondarytheme':\r\n this.updateOrganizationField(value, 'colorThemeSecondaryRGB')\r\n break\r\n case 'org-details-tertiarytheme':\r\n this.updateOrganizationField(value, 'colorThemeTertiaryRGB')\r\n break\r\n\r\n case 'org-details-herotext':\r\n this.updateOrganizationField(value, 'loginPageHeroText')\r\n break\r\n\r\n case 'org-details-heroFontColor':\r\n this.updateOrganizationField(value, 'loginPageHeroTextColor')\r\n break\r\n\r\n case 'org-details-heroBackgroundColor':\r\n this.updateOrganizationField(\r\n value,\r\n 'loginPageHeroBackgroundColor'\r\n )\r\n break\r\n\r\n case 'org-details-bannerBackgroundColor':\r\n this.updateOrganizationField(value, 'bannerBackgroundColor')\r\n break\r\n\r\n case 'org-details-bannerTextColor':\r\n this.updateOrganizationField(value, 'bannerTextColor')\r\n break\r\n\r\n case 'org-details-bannerText':\r\n // need to make sure value is equal or less than 2000 characters\r\n if (value.length > 2000) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError =\r\n 'Banner text cannot be more than 2000 characters.'\r\n }\r\n this.setState({\r\n errorTextBannerText: msgError,\r\n isValidBannerText: isValidField\r\n })\r\n this.updateOrganizationField(value, 'bannerText')\r\n break\r\n\r\n case 'org-details-bannerTitle':\r\n this.updateOrganizationField(value, 'bannerTitle')\r\n break\r\n\r\n case 'org-details-signupurl':\r\n this.updateOrganizationField(value, 'signUpURL')\r\n break\r\n\r\n case 'org-details-shipmentservice':\r\n this.updateOrganizationField(value, 'shipmentServiceSelected')\r\n break\r\n\r\n case 'org-details-eadaptorauth':\r\n this.updateOrganizationField(value, 'eAdaptorAuthMethod')\r\n break\r\n\r\n case 'org-eAdaptor-authUrl':\r\n this.updateOrganizationField(value, 'eAdaptorAuthUrl')\r\n break\r\n\r\n case 'org-details-dateformat':\r\n this.updateOrganizationField(value, 'dateFormatId')\r\n break\r\n\r\n case 'org-eAdaptor-availableCompanyIds':\r\n this.updateOrganizationField(value, 'cargowiseCompanyCodes')\r\n break\r\n\r\n case 'org-details-logo':\r\n this.changePreviewLogo()\r\n updData = false\r\n this.setState({ updLogo: true })\r\n break\r\n\r\n case 'org-address-street':\r\n this.updateOrganizationField(value, 'companyAddressStreet')\r\n break\r\n\r\n case 'org-address-region':\r\n this.updateOrganizationField(value, 'companyAddressRegion')\r\n break\r\n\r\n case 'org-address-city':\r\n this.updateOrganizationField(value, 'companyAddressCity')\r\n break\r\n\r\n case 'org-address-zipcode':\r\n this.updateOrganizationField(value, 'companyAddressZipCode')\r\n break\r\n\r\n case 'org-address-country':\r\n this.updateOrganizationField(value, 'companyAddressCountry')\r\n break\r\n\r\n case 'org-contact-firstname':\r\n this.updateOrganizationField(value, 'contactFirstName')\r\n break\r\n\r\n case 'org-contact-lastname':\r\n this.updateOrganizationField(value, 'contactLastName')\r\n break\r\n\r\n case 'org-contact-email':\r\n var emailValid = emailValidation(value)\r\n\r\n if (!emailValid) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'Email address is not valid.'\r\n }\r\n\r\n this.setState({\r\n errorTextEmail: msgError,\r\n isValidEmail: isValidField\r\n })\r\n this.updateOrganizationField(value, 'contactEmail')\r\n break\r\n\r\n case 'org-contact-phone': //+1-541-754-3010\r\n var phoneValid = phoneNumberValidation(value)\r\n\r\n if (!phoneValid) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'Phone number is not valid.'\r\n }\r\n\r\n this.setState({\r\n errorTextPhone: msgError,\r\n isValidPhone: isValidField\r\n })\r\n this.updateOrganizationField(value, 'contactPhoneNumber')\r\n break\r\n\r\n case 'integration-url':\r\n this.updateOrganizationField(value, 'webServiceIntegrationUrl')\r\n break\r\n\r\n case 'org-eAdaptor-apiUrl':\r\n this.updateOrganizationField(value, 'eAdaptorApiUrl')\r\n break\r\n\r\n case 'org-eAdaptor-companyCode':\r\n this.updateOrganizationField(value, 'eAdaptorCompanyCode')\r\n break\r\n\r\n case 'org-eAdaptor-customsCompanyCode':\r\n this.updateOrganizationField(\r\n value,\r\n 'eAdaptorCustomsCompanyCode'\r\n )\r\n break\r\n\r\n case 'org-eAdaptor-enterpriseId':\r\n this.updateOrganizationField(value, 'eAdaptorEnterpriseId')\r\n break\r\n\r\n case 'org-eAdaptor-serverId':\r\n this.updateOrganizationField(value, 'eAdaptorServerId')\r\n break\r\n\r\n case 'org-eAdaptor-userName':\r\n this.updateOrganizationField(value, 'eAdaptorUserName')\r\n break\r\n\r\n case 'org-eAdaptor-password':\r\n this.setState({ eAdaptorPassword: value })\r\n this.updateOrganizationField(value, 'eAdaptorPassword')\r\n break\r\n\r\n case 'searchShipment':\r\n const searchShipment = this.state.searchShipment\r\n this.setState({ searchShipment: !searchShipment })\r\n break\r\n\r\n case 'demo-supplier-address-name':\r\n this.updateOrganizationField(value, 'demoSupplierAddressName')\r\n break\r\n\r\n case 'demo-supplier-address-street':\r\n this.updateOrganizationField(value, 'demoSupplierAddressStreet')\r\n break\r\n\r\n case 'demo-supplier-address-city':\r\n this.updateOrganizationField(value, 'demoSupplierAddressCity')\r\n break\r\n\r\n case 'demo-supplier-address-zipcode':\r\n this.updateOrganizationField(\r\n value,\r\n 'demoSupplierAddressZipCode'\r\n )\r\n break\r\n\r\n case 'demo-supplier-address-country':\r\n this.updateOrganizationField(\r\n value,\r\n 'demoSupplierAddressCountry'\r\n )\r\n break\r\n\r\n case 'demo-supplier-address-countrycode':\r\n this.updateOrganizationField(\r\n value,\r\n 'demoSupplierAddressCountryCode'\r\n )\r\n break\r\n\r\n case 'demo-buyer-address-name':\r\n this.updateOrganizationField(value, 'demoBuyerAddressName')\r\n break\r\n\r\n case 'demo-buyer-address-street':\r\n this.updateOrganizationField(value, 'demoBuyerAddressStreet')\r\n break\r\n\r\n case 'demo-buyer-address-city':\r\n this.updateOrganizationField(value, 'demoBuyerAddressCity')\r\n break\r\n\r\n case 'demo-buyer-address-zipcode':\r\n this.updateOrganizationField(value, 'demoBuyerAddressZipCode')\r\n break\r\n\r\n case 'demo-buyer-address-country':\r\n this.updateOrganizationField(value, 'demoBuyerAddressCountry')\r\n break\r\n\r\n case 'demo-buyer-address-countrycode':\r\n this.updateOrganizationField(\r\n value,\r\n 'demoBuyerAddressCountryCode'\r\n )\r\n break\r\n\r\n case 'org-details-zoomlevel':\r\n this.updateOrganizationField(value, 'zoomLevel')\r\n // update local storage\r\n localStorage.setItem('zoomLevel', value)\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm, updData: updData })\r\n }\r\n\r\n changePreviewLogo() {\r\n let reader = new FileReader()\r\n let file = this.refs.file.files[0]\r\n let files = this.state.files\r\n\r\n reader.readAsArrayBuffer(file)\r\n\r\n reader.onloadend = function (e) {\r\n var blob = new Blob([this.refs.file.files[0]])\r\n window.URL = window.URL || window.webkitURL\r\n var blobURL = window.URL.createObjectURL(blob)\r\n\r\n if (files.length === 0) {\r\n files.push(file)\r\n } else {\r\n files[0] = file\r\n }\r\n this.setState(prevState => {\r\n let organization = Object.assign({}, prevState.organization)\r\n organization.organizationLogoUrl = blobURL\r\n return { organization }\r\n })\r\n\r\n this.setState({ files: files })\r\n }.bind(this)\r\n }\r\n\r\n handleSubmit = async event => {\r\n var { organization, updLogo, files, updData, groupdata, orgModuleSyncConfigs } = {\r\n ...this.state\r\n }\r\n organization.eAdaptorPassword = this.state.eAdaptorPassword\r\n organization.minimumSyncDate = organization.syncConfig.minimumSyncDate\r\n this.setState({ organization })\r\n delete organization['clients']\r\n delete organization['id']\r\n event.preventDefault()\r\n\r\n if (updLogo && files !== null) {\r\n var formData = new FormData()\r\n var file = this.state.files[0]\r\n formData.append('files', file)\r\n this.updateOrganizationData(formData, updLogo)\r\n }\r\n if (updData) {\r\n this.updateOrganizationData(organization, updLogo)\r\n }\r\n this.updateOrganizationBIGroupData(groupdata)\r\n if (groupdata.groupId != null && groupdata.groupId != '') {\r\n this.saveOrgReportsData()\r\n this.saveOrgDashboardsData()\r\n }\r\n // save sync configs\r\n const syncConfigsUpdate = orgModuleSyncConfigs.map(config => {\r\n return {\r\n syncId: config.syncId,\r\n syncInterval: config.syncInterval,\r\n isActive: config.isActive,\r\n nextSyncFromDate: config.nextSyncFromDate\r\n }\r\n })\r\n this.updateModuleSyncConfigs(syncConfigsUpdate)\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n {\r\n this.handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n handleModuleChange = (key, value) => {\r\n const { organization } = this.state\r\n let permissions = null\r\n // check if key exists in array\r\n if (\r\n organization.modulePermissionArray.some(e => e.propertyKey === key)\r\n ) {\r\n permissions = organization.modulePermissionArray.map(permission => {\r\n if (permission.propertyKey === key) {\r\n permission['value'] = value\r\n }\r\n return permission\r\n })\r\n } else {\r\n permissions = [\r\n ...organization.modulePermissionArray,\r\n {\r\n propertyKey: key,\r\n value: value\r\n }\r\n ]\r\n }\r\n\r\n this.setState({\r\n organization: {\r\n ...organization,\r\n modulePermissionArray: permissions\r\n }\r\n })\r\n }\r\n\r\n handleCheckboxChange = (event, field) => {\r\n const checked = event.target.checked\r\n\r\n switch (field) {\r\n case 'usesOpenTrack':\r\n this.updateOrganizationField(checked, 'isOpenTrack')\r\n break\r\n case 'usesOpenTrackTracking':\r\n this.updateOrganizationField(checked, 'isOpenTrackTracking')\r\n break\r\n case 'showBanner':\r\n this.updateOrganizationField(checked, 'showBanner')\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n handleReportChange = (key, value) => {\r\n const { reportAccessList } = this.state\r\n const reports = reportAccessList.map(report => {\r\n if (report.reportId === key) {\r\n report['isChecked'] = value\r\n }\r\n return report\r\n })\r\n\r\n this.setState({\r\n reportAccessList: reports\r\n })\r\n }\r\n handleDashboardChange = (key, value) => {\r\n const { dashboardAccessList } = this.state\r\n const dashboards = dashboardAccessList.map(dashboard => {\r\n if (dashboard.dashboardId === key) {\r\n dashboard['isChecked'] = value\r\n }\r\n return dashboard\r\n })\r\n this.setState({\r\n dashboardAccessList: dashboards\r\n })\r\n }\r\n\r\n renderInput = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { organization } = this.state\r\n const { classes } = this.props\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleChange(e, id, required)}\r\n {...params}\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n renderInput2 = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { groupdata } = this.state\r\n const { classes } = this.props\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleChange2(e, id, required)}\r\n {...params}\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n renderColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n <>\r\n \r\n this.handleChange(e, 'org-details-theme', true)\r\n }\r\n value={organization.colorThemeRGB}\r\n />\r\n \r\n )\r\n }\r\n\r\n renderHeaderTextColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-headertheme', true)\r\n }\r\n value={organization.colorThemeTextRGB}\r\n />\r\n )\r\n }\r\n\r\n renderPrimaryColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-primarytheme', true)\r\n }\r\n value={organization.colorThemePrimaryRGB}\r\n />\r\n )\r\n }\r\n renderSecondaryColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-secondarytheme', true)\r\n }\r\n value={organization.colorThemeSecondaryRGB}\r\n />\r\n )\r\n }\r\n renderTertiaryColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-tertiarytheme', true)\r\n }\r\n value={organization.colorThemeTertiaryRGB}\r\n />\r\n )\r\n }\r\n\r\n renderHeroFontColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-heroFontColor', true)\r\n }\r\n value={organization.loginPageHeroTextColor}\r\n />\r\n )\r\n }\r\n\r\n renderHeroBackgroundColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(\r\n e,\r\n 'org-details-heroBackgroundColor',\r\n true\r\n )\r\n }\r\n value={organization.loginPageHeroBackgroundColor}\r\n />\r\n )\r\n }\r\n\r\n renderBannerBackgroundColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(\r\n e,\r\n 'org-details-bannerBackgroundColor',\r\n true\r\n )\r\n }\r\n value={organization.bannerBackgroundColor}\r\n />\r\n )\r\n }\r\n\r\n renderBannerTextColorSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-bannerTextColor', true)\r\n }\r\n value={organization.bannerTextColor}\r\n />\r\n )\r\n }\r\n\r\n renderShipmentServiceSelector = () => {\r\n const { organization } = this.state\r\n const foundIndex = shipmentServiceOptions.findIndex(\r\n shipmentService =>\r\n shipmentService.value === organization.shipmentServiceSelected\r\n )\r\n\r\n return (\r\n \r\n this.handleChange(e, 'org-details-shipmentservice', true)\r\n }\r\n value={\r\n shipmentServiceOptions[foundIndex >= 0 ? foundIndex : 0]\r\n .value\r\n }\r\n input={}\r\n >\r\n {shipmentServiceOptions.map(option => (\r\n \r\n {option.label}\r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n renderZoomLevelSelector = () => {\r\n const { organization } = this.state\r\n return (\r\n \r\n this.handleChange(e, 'org-details-zoomlevel', true)\r\n }\r\n value={organization.zoomLevel}\r\n input={}\r\n >\r\n \r\n 25%\r\n \r\n \r\n 33%\r\n \r\n \r\n 50%\r\n \r\n \r\n 67%\r\n \r\n \r\n 75%\r\n \r\n \r\n 80%\r\n \r\n \r\n 90%\r\n \r\n \r\n 100%\r\n \r\n \r\n )\r\n }\r\n\r\n handleSyncFromDateSelectorClose = () => {\r\n this.setState({ syncFromDateSelectorOpen: false })\r\n }\r\n\r\n setOrgDateFormatFromOptions = () => {\r\n const { organization, dateFormatOptions } = this.state\r\n const foundIndex = dateFormatOptions.findIndex(\r\n dateFormatOption => dateFormatOption.id === organization.dateFormatId\r\n )\r\n\r\n if (foundIndex >= 0) {\r\n this.setState({\r\n orgDateFormat: dateFormatOptions[foundIndex]\r\n })\r\n }\r\n\r\n }\r\n\r\n renderDateFormatSelector = () => {\r\n const { organization, dateFormatOptions } = this.state\r\n\r\n return (\r\n \r\n this.handleChange(e, 'org-details-dateformat', true)\r\n }\r\n value={organization.dateFormatId}\r\n input={}\r\n >\r\n {dateFormatOptions.map(option => (\r\n \r\n {option.description}\r\n \r\n ))}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n\r\n const {\r\n organization,\r\n showPassword,\r\n isSuperAdmin,\r\n expanded,\r\n orgModuleSyncConfigs,\r\n openSyncHistoryView,\r\n syncHistoryData,\r\n orgDateFormat,\r\n syncFromDateSelectorOpen,\r\n syncFromDialogOpen,\r\n settingNewClientSync\r\n } = this.state\r\n\r\n const eAdaptorPassword = organization.eAdaptorPassword\r\n\r\n const {\r\n reportAccessList,\r\n dashboardAccessList,\r\n displayNoDashboards,\r\n displayNoReports\r\n } = this.state\r\n\r\n const backgroundColor =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#ffffff'\r\n\r\n const textColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#000000'\r\n\r\n const handleSyncHistoryViewClickOpen = async rowClickedData => {\r\n var historyData = await this.getSyncHistoryData(rowClickedData)\r\n this.setState({ syncHistoryData: historyData })\r\n this.setState({ openSyncHistoryView: true })\r\n }\r\n\r\n const handleSyncHistoryViewClickClose = () => {\r\n this.setState({ openSyncHistoryView: false })\r\n }\r\n\r\n const dateToLocalString = (date) => {\r\n if (!date) return '-'\r\n return dateFns.moment.utc(date).local().format('YYYY-MM-DD HH:mm:ss')\r\n }\r\n\r\n const utcDateToLocal = (date) => {\r\n if (!date) return null\r\n return dateFns.moment.utc(date).local()\r\n }\r\n\r\n const syncStatusTableHeadCells = [\r\n {\r\n name: 'syncIcon',\r\n label: ' ',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var errorText = tableMeta.rowData[4]\r\n return errorText !== null ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n }\r\n },\r\n { name: 'logId', label: 'Id' },\r\n { name: 'syncId', label: 'Sync Id' },\r\n { name: 'syncName', label: 'Sync Name' },\r\n { \r\n name: 'syncError', \r\n label: 'Sync Error',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return value ? \r\n {value}} placement=\"top\">\r\n \r\n : null\r\n }\r\n }\r\n },\r\n { name: 'syncStatus', label: 'Sync Message' },\r\n {\r\n name: 'syncDate',\r\n label: 'Last Sync Completion Date',\r\n options: {\r\n customBodyRender: value => {\r\n return dateToLocalString(value)\r\n }\r\n }\r\n },\r\n {\r\n name: 'watermarkDate',\r\n label: 'Next Sync \\'From\\' Date',\r\n options: {\r\n customBodyRender: value => {\r\n return dateToLocalString(value)\r\n }\r\n }\r\n },\r\n {\r\n name: 'nextSyncFromDateOptions',\r\n label: 'Next Sync Date Range',\r\n options: {\r\n customBodyRender: (value, tableMeta) => {\r\n return this.renderSyncFromDateSelector(tableMeta)\r\n }\r\n }\r\n },\r\n {\r\n name:'syncInterval',\r\n label:'Sync Interval',\r\n options:{\r\n customBodyRender: (value, tableMeta) => {\r\n // want to return a list of available sync statuses and default to the current value\r\n return (\r\n \r\n this.handleSyncConfigChange(\r\n tableMeta.rowData[2],\r\n 'syncInterval',\r\n e.target.value\r\n )\r\n }\r\n value={value}\r\n input={}\r\n >\r\n {organization.syncConfig.syncIntervals.map(option => (\r\n \r\n {option.intervalDescription}\r\n \r\n ))}\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: 'viewSyncHistory',\r\n label: 'Sync History',\r\n options: {\r\n customBodyRender: (value, tableMeta) => {\r\n const rowData = tableMeta.rowData\r\n return (\r\n
\r\n {\r\n handleSyncHistoryViewClickOpen(rowData)\r\n }}\r\n >\r\n View\r\n \r\n
\r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: 'Active',\r\n options: {\r\n customBodyRender: (value, tableMeta) => {\r\n return (\r\n {\r\n this.handleSyncConfigChange(\r\n tableMeta.rowData[2],\r\n 'isActive',\r\n e.target.checked\r\n )\r\n }}\r\n />\r\n )\r\n \r\n }\r\n }\r\n }\r\n ]\r\n\r\n const syncStatusTableOptions = {\r\n filter: false,\r\n viewColumns: false,\r\n print: false,\r\n download: false,\r\n selectableRowsOnClick: false,\r\n selectableRows: 'none',\r\n caseSensitive: false,\r\n rowsPerPageOptions: [10],\r\n filterType: 'dropdown',\r\n responsive: 'stacked',\r\n rowsPerPage: 10,\r\n searchOpen: false,\r\n search: false\r\n }\r\n\r\n return this.state.isLoading ? (\r\n \r\n ) : (\r\n
\r\n \r\n {this.renderAlert()}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n 3PL Organization\r\n Information &\r\n Theme\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'org-details-name',\r\n 'Organization Name',\r\n 'Organization Name',\r\n 'name',\r\n true,\r\n 'isValidOrgName',\r\n 'errorTextOrgName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-app-name',\r\n 'Application Name',\r\n 'Application Name',\r\n 'organizationAppName',\r\n false,\r\n 'isValidOrgAppName',\r\n 'errorTextOrgAppName'\r\n )}\r\n \r\n \r\n
\r\n \r\n {this.renderColorSelector()}\r\n \r\n {/* Background Color */}\r\n Primary\r\n background\r\n color\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {this.renderHeaderTextColorSelector()}\r\n \r\n Primary\r\n Text\r\n Color\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {this.renderPrimaryColorSelector()}\r\n \r\n Secondary\r\n background\r\n color\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {this.renderSecondaryColorSelector()}\r\n \r\n Secondary\r\n Text\r\n Color\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Tertiary\r\n Color\r\n \r\n {this.renderTertiaryColorSelector()}\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n Date\r\n Format\r\n \r\n {this.renderDateFormatSelector()}\r\n \r\n \r\n \r\n
\r\n \r\n {organization.organizationLogoUrl && (\r\n \r\n \r\n {}\r\n \r\n \r\n \r\n \r\n {\r\n organization.name\r\n }\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.handleChange(\r\n e,\r\n 'org-details-logo',\r\n false\r\n )\r\n }\r\n />\r\n\r\n \r\n
\r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Login\r\n Page\r\n Hero\r\n Background\r\n Color\r\n \r\n {this.renderHeroBackgroundColorSelector()}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Login\r\n Page\r\n Hero\r\n Font\r\n Color\r\n \r\n {this.renderHeroFontColorSelector()}\r\n \r\n
\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-herotext',\r\n 'Login Page Hero Text',\r\n 'Login Page Hero Text',\r\n 'loginPageHeroText',\r\n true,\r\n 'isValidLoginPageHeroText',\r\n 'errorTextLoginPageHeroText'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-signupurl',\r\n 'Login Page Signup URL',\r\n 'Login Page Signup URL',\r\n 'signUpURL',\r\n false,\r\n 'isValidLoginPageSignUpURL',\r\n 'errorTextLoginPageSignUpURL'\r\n )}\r\n \r\n \r\n \r\n \r\n Zoom\r\n Level\r\n \r\n {this.renderZoomLevelSelector()}\r\n \r\n \r\n \r\n {\r\n this.handleCheckboxChange(\r\n event,\r\n 'showBanner'\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n organization?.showBanner\r\n }\r\n />\r\n }\r\n label={\r\n 'Show Site Banner'\r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n Site\r\n Banner\r\n Background\r\n Color\r\n \r\n {this.renderBannerBackgroundColorSelector()}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n Site\r\n Banner\r\n Font\r\n Color\r\n \r\n {this.renderBannerTextColorSelector()}\r\n \r\n
\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-bannerTitle',\r\n 'Site Banner Title',\r\n 'Site Banner Title',\r\n 'bannerTitle',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-bannerText',\r\n 'Site Banner Text',\r\n 'Site Banner Text',\r\n 'bannerText',\r\n false,\r\n 'isValidBannerText',\r\n 'errorTextBannerText'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Custom Links\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link-name',\r\n 'Custom Link Name',\r\n 'Custom Link Name',\r\n 'organizationCustomLinkName',\r\n false,\r\n 'isValidOrgLinkName',\r\n 'errorTextLinkName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link-url',\r\n 'Custom Link Url (http:// or https://)',\r\n 'Custom Link Url (http:// or https://)',\r\n 'organizationCustomLinkUrl',\r\n false,\r\n 'isValidOrgLinkUrl',\r\n 'errorTextLinkUrl'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link2-name',\r\n 'Custom Link Name',\r\n 'Custom Link Name',\r\n 'organizationCustomLink2Name',\r\n false,\r\n 'isValidOrgLink2Name',\r\n 'errorTextLink2Name'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link2-url',\r\n 'Custom Link Url (http:// or https://)',\r\n 'Custom Link Url (http:// or https://)',\r\n 'organizationCustomLink2Url',\r\n false,\r\n 'isValidOrgLink2Url',\r\n 'errorTextLink2Url'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link3-name',\r\n 'Custom Link Name',\r\n 'Custom Link Name',\r\n 'organizationCustomLink3Name',\r\n false,\r\n 'isValidOrgLink3Name',\r\n 'errorTextLink3Name'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link3-url',\r\n 'Custom Link Url (http:// or https://)',\r\n 'Custom Link Url (http:// or https://)',\r\n 'organizationCustomLink3Url',\r\n false,\r\n 'isValidOrgLink3Url',\r\n 'errorTextLink3Url'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link4-name',\r\n 'Custom Link Name',\r\n 'Custom Link Name',\r\n 'organizationCustomLink4Name',\r\n false,\r\n 'isValidOrgLink4Name',\r\n 'errorTextLink4Name'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link4-url',\r\n 'Custom Link Url (http:// or https://)',\r\n 'Custom Link Url (http:// or https://)',\r\n 'organizationCustomLink4Url',\r\n false,\r\n 'isValidOrgLink4Url',\r\n 'errorTextLink4Url'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link5-name',\r\n 'Custom Link Name',\r\n 'Custom Link Name',\r\n 'organizationCustomLink5Name',\r\n false,\r\n 'isValidOrgLink5Name',\r\n 'errorTextLink5Name'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-details-custom-link5-url',\r\n 'Custom Link Url (http:// or https://)',\r\n 'Custom Link Url (http:// or https://)',\r\n 'organizationCustomLink5Url',\r\n false,\r\n 'isValidOrgLink5Url',\r\n 'errorTextLink5Url'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Company Address\r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'org-address-street',\r\n 'Street',\r\n 'Street',\r\n 'companyAddressStreet',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-address-region',\r\n 'Region',\r\n 'Region',\r\n 'companyAddressRegion',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-address-city',\r\n 'Town/City',\r\n 'Town/City',\r\n 'companyAddressCity',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-address-zipcode',\r\n 'Zip Code',\r\n 'Zip Code',\r\n 'companyAddressZipCode',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-address-country',\r\n 'Country',\r\n 'Country',\r\n 'companyAddressCountry',\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Admin Contact\r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'org-contact-firstname',\r\n 'First Name',\r\n 'First Name',\r\n 'contactFirstName',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-contact-lastname',\r\n 'Last Name',\r\n 'Last Name',\r\n 'contactLastName',\r\n true\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-contact-email',\r\n 'Email',\r\n 'test@example.com',\r\n 'contactEmail',\r\n false,\r\n 'isValidEmail',\r\n 'errorTextEmail'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-contact-phone',\r\n 'Phone',\r\n '+1-541-754-3010',\r\n 'contactPhoneNumber',\r\n false,\r\n 'isValidPhone',\r\n 'errorTextPhone'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Web Credentials\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-apiUrl',\r\n 'API URL',\r\n 'API URL',\r\n 'eAdaptorApiUrl',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-companyCode',\r\n 'Default Company Id',\r\n 'Default Company Id',\r\n 'eAdaptorCompanyCode',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-customsCompanyCode',\r\n 'Default Customs Company Id',\r\n 'Default Customs Company Id',\r\n 'eAdaptorCustomsCompanyCode',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-enterpriseId',\r\n 'Enterprise Id',\r\n 'Enterprise Id',\r\n 'eAdaptorEnterpriseId',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-serverId',\r\n 'Server Id',\r\n 'Server Id',\r\n 'eAdaptorServerId',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'org-eAdaptor-userName',\r\n 'User Name',\r\n 'User Name',\r\n 'eAdaptorUserName',\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n User\r\n Password\r\n \r\n \r\n this.handleChange(\r\n e,\r\n 'org-eAdaptor-password',\r\n false\r\n )\r\n }\r\n value={\r\n eAdaptorPassword ||\r\n ''\r\n }\r\n endAdornment={\r\n \r\n \r\n {showPassword ? (\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.renderInput(\r\n 'org-eAdaptor-availableCompanyIds',\r\n 'Available Company Ids',\r\n 'Available Company Ids',\r\n 'cargowiseCompanyCodes',\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Shipment Service\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'integration-url',\r\n 'Url',\r\n 'Enter Integration Url',\r\n 'webServiceIntegrationUrl',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n Shipment\r\n Service\r\n \r\n {this.renderShipmentServiceSelector()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n BI Group Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput2(\r\n 'bigroupId',\r\n 'GroupID',\r\n 'Enter GroupID',\r\n 'groupId',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput2(\r\n 'bigroupName',\r\n 'Group Name',\r\n 'Enter GroupName',\r\n 'groupName',\r\n false,\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Module Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'ShipmentSearch',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n checked={extractSearchShipment(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Search Shipment'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'ShipmentCreate',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n name=\"search\"\r\n checked={extractCreateShipment(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Create Shipment'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Customs',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n name=\"search\"\r\n checked={extractSeeCustoms(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Customs'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Accounting',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n name=\"search\"\r\n checked={extractSeeAccounting(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Accounting'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Booking',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n name=\"search\"\r\n checked={extractSeeBooking(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Bookings'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Order',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n checked={extractSeeOrder(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Orders'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'CreateOrder',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n checked={extractCreateOrder(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Create Order'\r\n }\r\n />\r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'Container',\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !isSuperAdmin\r\n }\r\n checked={extractSeeContainers(\r\n organization.modulePermissionArray\r\n )}\r\n />\r\n }\r\n label={\r\n 'Containers'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Report Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoReports && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {reportAccessList.map(\r\n report => (\r\n {\r\n this.handleReportChange(\r\n report.reportId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n report.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n report.reportName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Dashboard Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoDashboards && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {dashboardAccessList.map(\r\n dashboard => (\r\n {\r\n this.handleDashboardChange(\r\n dashboard.dashboardId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n dashboard.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n dashboard.dashboardName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Module Options\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleCheckboxChange(\r\n event,\r\n 'usesOpenTrack'\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n organization?.isOpenTrack ||\r\n false\r\n }\r\n />\r\n }\r\n label={\r\n 'Use OpenTrack Container Data'\r\n }\r\n />\r\n {\r\n this.handleCheckboxChange(\r\n event,\r\n 'usesOpenTrackTracking'\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n organization?.isOpenTrackTracking ||\r\n false\r\n }\r\n />\r\n }\r\n label={\r\n 'Use OpenTrack Tracking Link'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Demo Mode\r\n Settings\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-name',\r\n 'Demo Supplier Name',\r\n 'Supplier Name',\r\n 'demoSupplierAddressName',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-street',\r\n 'Demo Supplier Street',\r\n 'Supplier Street',\r\n 'demoSupplierAddressStreet',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-city',\r\n 'Demo Supplier Town/City',\r\n 'Supplier Town/City',\r\n 'demoSupplierAddressCity',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-zipcode',\r\n 'Demo Supplier Zip Code',\r\n 'Supplier Zip Code',\r\n 'demoSupplierAddressZipCode',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-country',\r\n 'Demo Supplier Country',\r\n 'Supplier Country',\r\n 'demoSupplierAddressCountry',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-supplier-address-countrycode',\r\n 'Demo Supplier Country Code',\r\n 'Supplier Country Code',\r\n 'demoSupplierAddressCountryCode',\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-name',\r\n 'Demo Buyer Name',\r\n 'Buyer Name',\r\n 'demoBuyerAddressName',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-street',\r\n 'Demo Buyer Street',\r\n 'Buyer Street',\r\n 'demoBuyerAddressStreet',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-city',\r\n 'Demo Buyer Town/City',\r\n 'Buyer Town/City',\r\n 'demoBuyerAddressCity',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-zipcode',\r\n 'Demo Buyer Zip Code',\r\n 'Buyer Zip Code',\r\n 'demoBuyerAddressZipCode',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-country',\r\n 'Demo Buyer Country',\r\n 'Buyer Country',\r\n 'demoBuyerAddressCountry',\r\n false\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'demo-buyer-address-countrycode',\r\n 'Demo Buyer Country Code',\r\n 'Buyer Country Code',\r\n 'demoBuyerAddressCountryCode',\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n Data Sync Management\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } \r\n >\r\n Refresh\r\n \r\n {\r\n this.state.syncStatusRefreshing && \r\n }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleOrgSyncConfigChange(\r\n e,\r\n 'minimumSyncDate'\r\n )\r\n }\r\n />\r\n \r\n
\r\n
\r\n \r\n \r\n this.handleSyncFromDialogOpen()}\r\n >\r\n Set All Sync Date Ranges\r\n \r\n this.handleNewClientSyncSchedule()}\r\n >\r\n Schedule New Client Sync\r\n \r\n {\r\n settingNewClientSync && \r\n }\r\n \r\n \r\n
\r\n \r\n \r\n \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.handleSubmit(e)\r\n }\r\n disabled={\r\n !this.state.isValidForm\r\n }\r\n >\r\n Save\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n handleSyncHistoryViewClickClose()}\r\n maxWidth={'xl'}\r\n fullWidth\r\n >\r\n \r\n {\r\n return dateToLocalString(value)\r\n }\r\n }\r\n }\r\n ]}\r\n data={syncHistoryData}\r\n options={{\r\n filter: true,\r\n sort: true,\r\n pagination: true,\r\n rowsPerPage: 10,\r\n selectableRows: false\r\n }}\r\n />\r\n \r\n \r\n this.handleSyncFromDateSelectorClose()}\r\n >\r\n \r\n
\r\n \r\n {\r\n this.setCustomSyncFromDate(e, this.state.currentSyncConfigId)\r\n // close dialog\r\n this.handleSyncFromDateSelectorClose()\r\n }}\r\n />\r\n \r\n
\r\n \r\n this.handleSyncFromDialogClose()}\r\n >\r\n \r\n
\r\n \r\n
Select Next Sync Date Range
\r\n
\r\n

Use this to update the sync date range for all modules.

\r\n
\r\n {\r\n this.renderSyncFromDateSelector()\r\n }\r\n
\r\n
\r\n \r\n \r\n )\r\n }\r\n\r\n handleNewClientSyncSchedule = async () => {\r\n this.setState({ settingNewClientSync: true })\r\n let url = 'api/crawlers/ScheduleNewClientSync'\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch(url, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n alert('New client sync scheduled')\r\n // refresh sync statuses\r\n this.handleSyncRefreshClick()\r\n } else {\r\n alert('Error scheduling new client sync')\r\n }\r\n this.setState({ settingNewClientSync: false })\r\n }\r\n\r\n setCustomSyncFromDate = (date, syncId) => {\r\n const { organization } = this.state\r\n let utcDate = dateFns.moment.utc(date)\r\n const minimumSyncDate = organization.syncConfig.minimumSyncDate\r\n // if there is a minimum sync date, make sure the selected date is after it\r\n if (minimumSyncDate) {\r\n if (utcDate.isBefore(minimumSyncDate)) {\r\n // set to minimum sync date\r\n utcDate = minimumSyncDate\r\n }\r\n }\r\n this.setState(prevState => {\r\n let orgModuleSyncConfigs = prevState.orgModuleSyncConfigs.map(\r\n config => {\r\n if (!syncId || config.syncId === syncId) {\r\n // if no syncId then all configs need to be updated\r\n // spread and update the correct value\r\n let updatedConfig = { \r\n ...config, \r\n nextSyncFromDate: utcDate,\r\n watermarkDate: utcDate\r\n }\r\n return updatedConfig\r\n }\r\n return config\r\n }\r\n )\r\n return { orgModuleSyncConfigs }\r\n })\r\n }\r\n\r\n handleSyncFromDialogClose = () => {\r\n this.setState({\r\n syncFromDialogOpen: false\r\n })\r\n }\r\n\r\n handleSyncFromDialogOpen = () => {\r\n this.setState({\r\n syncFromDialogOpen: true\r\n })\r\n }\r\n\r\n async populateDateFormatOptions() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/dataManagement/GetDateFormats', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({\r\n dateFormatOptions: data\r\n })\r\n }\r\n }\r\n\r\n async updateModuleSyncConfigs(syncConfigs) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/organizations/UpdateOrganizationSyncConfig', {\r\n headers: { \r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(syncConfigs)\r\n })\r\n if (response.ok) {\r\n // happy days\r\n } else {\r\n // sad days\r\n // show error\r\n const responseText = await response.text()\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n responseText\r\n return { alert }\r\n })\r\n }\r\n }\r\n\r\n async populateOrganizationData() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/organizations/GetOrganization', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState(\r\n {\r\n organization: data,\r\n orgId: data.id,\r\n eAdaptorPassword: data.eAdaptorPassword,\r\n orgModuleSyncConfigs: data.adfSyncStatusArray\r\n },\r\n () => {\r\n this.populateOrganizationBIGroupData(data)\r\n this.setOrgDateFormatFromOptions()\r\n }\r\n )\r\n }\r\n }\r\n async getSyncHistoryData(rowClickedData) {\r\n var syncId = rowClickedData[2] // extractID/syncID\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/organizations/GetSyncHistory?syncId=' + syncId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: 'GET'\r\n }\r\n )\r\n if (response.ok) {\r\n const syncHistoryData = await response.json()\r\n return syncHistoryData\r\n }\r\n }\r\n\r\n //to get the organizations->reports\r\n async getOrgReportsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/bireport/GetOrganizationBIReports/' + id,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == null) {\r\n data = []\r\n }\r\n this.setState({\r\n reportAccessList: data\r\n })\r\n\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoReports: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n reportAccessList: []\r\n })\r\n this.setState({\r\n displayNoReports: true,\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n //to get the organizations->dashboards\r\n async getOrgDashboardsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/bidashboard/GetOrganizationBIDashboards/' + id,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == null) {\r\n data = []\r\n }\r\n this.setState({\r\n dashboardAccessList: data\r\n })\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoDashboards: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n dashboardAccessList: []\r\n })\r\n this.setState({\r\n displayNoDashboards: true,\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n renderSyncFromDateSelector = (syncConfig) => {\r\n return (\r\n {\r\n this.handleSyncConfigChange(\r\n syncConfig?.rowData[2],\r\n 'nextSyncFromDate',\r\n e.target.value\r\n )\r\n // may be triggered from dialog so close on select\r\n this.handleSyncFromDialogClose()\r\n }\r\n }\r\n defaultValue={nextSyncDateOptions ? nextSyncDateOptions[0].value : ''}\r\n input={}\r\n >\r\n {nextSyncDateOptions.map(\r\n option => (\r\n \r\n {option.label}\r\n \r\n )\r\n )}\r\n \r\n )\r\n }\r\n\r\n //to save the org->reports\r\n async saveOrgReportsData() {\r\n const token = await authService.getAccessToken()\r\n const { orgId } = this.state\r\n const { reportAccessList } = this.state\r\n let list = []\r\n reportAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n PSAOrganizationId: orgId,\r\n ReportID: x.reportId,\r\n ReportName: x.reportName\r\n })\r\n }\r\n })\r\n let data = {\r\n PSAOrganizationId: orgId,\r\n Reports: list\r\n }\r\n let errText = ''\r\n await fetch('api/organizations/SaveOrganizationBIReports', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // do nothing\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n //to save the org->dashboards\r\n async saveOrgDashboardsData() {\r\n const token = await authService.getAccessToken()\r\n const { dashboardAccessList } = this.state\r\n const { orgId } = this.state\r\n let list = []\r\n dashboardAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n PSAOrganizationId: orgId,\r\n DashboardID: x.dashboardId,\r\n DashboardName: x.dashboardName\r\n })\r\n }\r\n })\r\n let data = {\r\n PSAOrganizationId: orgId,\r\n Dashboards: list\r\n }\r\n let errText = ''\r\n await fetch('api/organizations/SaveOrganizationBIDashboards', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // do nothing\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n\r\n //to get the BI-group details\r\n async populateOrganizationBIGroupData(organization) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/organizations/GetOrganizationGroupDetails',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({\r\n groupdata: data\r\n })\r\n if (data.groupId != null && data.groupId != '') {\r\n this.getOrgReportsData(organization.id)\r\n this.getOrgDashboardsData(organization.id)\r\n } else {\r\n this.setState({\r\n reportAccessList: [],\r\n dashboardAccessList: [],\r\n displayNoReports: true,\r\n displayNoDashboards: true\r\n })\r\n }\r\n }\r\n }\r\n\r\n //to update/save the BI-group details\r\n async updateOrganizationBIGroupData(data) {\r\n this.setState({ isPosting: true })\r\n const { organization } = this.state\r\n let data_ = {\r\n GroupId: data.groupId,\r\n GroupName: data.groupName,\r\n Id: data.id\r\n }\r\n const url = 'api/organizations/PutOrganizationBIGroup'\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n 'content-type': 'application/json; charset=utf-8',\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*'\r\n }\r\n\r\n await fetch(url, {\r\n method: 'PUT',\r\n headers: header,\r\n body: JSON.stringify(data_)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n this.setState({\r\n isPosting: false\r\n })\r\n }\r\n })\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving this organization.'\r\n return { alert }\r\n })\r\n })\r\n }\r\n\r\n async updateOrganizationData(data, updLogo) {\r\n this.setState({ isPosting: true })\r\n let errText = ''\r\n const url =\r\n 'api/organizations' + (updLogo ? '/UpdateOrganizationLogo' : '')\r\n\r\n const token = await authService.getAccessToken()\r\n const header = {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*'\r\n }\r\n if (!updLogo) {\r\n header['Content-Type'] = 'application/json'\r\n }\r\n\r\n await fetch(url, {\r\n method: 'PUT',\r\n headers: header,\r\n body: updLogo ? data : JSON.stringify(data)\r\n })\r\n .then(async response => {\r\n let results = null\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'Organization information is saved.'\r\n return { alert }\r\n })\r\n results = response.json()\r\n } else {\r\n const responseText = await response.text()\r\n results = responseText\r\n errText = 'Code[' + response.status + '] ' + responseText\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n return results\r\n })\r\n .then(d => {\r\n if (!updLogo) {\r\n this.setState({\r\n organization: d ? d : data\r\n })\r\n }\r\n this.setState({\r\n updLogo: false,\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n updLogo: false,\r\n isPosting: false\r\n })\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving this organization | ' +\r\n error\r\n return { alert }\r\n })\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(OrganizationDetails)\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport {\r\n Grid,\r\n FormControl,\r\n Button,\r\n FormControlLabel,\r\n Checkbox\r\n} from '@material-ui/core'\r\nimport { TextField, InputAdornment } from '@material-ui/core'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport RecentActorsIcon from '@material-ui/icons/RecentActors'\r\nimport { emailValidation } from '../components/shared/Helpers'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport {\r\n extractCreateShipment,\r\n extractSearchShipment,\r\n extractSeeCustoms,\r\n extractSeeAccounting,\r\n extractSeeBooking,\r\n extractSeeOrder,\r\n extractSeeContainers,\r\n extractCreateOrder\r\n} from '../utils/permissions'\r\nimport { getAppInfo } from '../api/api'\r\nimport { CardContent } from '@material-ui/core'\r\nimport Paper from '@material-ui/core/Paper'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\n\r\nconst usersPath = { pathname: `${ApplicationPaths.Users}` }\r\nconst usrRole = 'Member'\r\n\r\nclass ClientUserDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n clientId: props.match.params.clientId,\r\n userId:\r\n props.match.params.userId !== null &&\r\n props.match.params.userId.toLowerCase() !== 'new'\r\n ? props.match.params.userId\r\n : null,\r\n isLoading: false,\r\n isPosting: false,\r\n user: [],\r\n requiredFields: [],\r\n reportAccessList: [],\r\n dashboardAccessList: [],\r\n emailSubscriptionList: [],\r\n emailFilterList: [],\r\n clientUserPermissionsList: [],\r\n isValidForm: true,\r\n isValidUserFirstName: true,\r\n errorTextUserFirstName: '',\r\n isValidUserLastName: true,\r\n errorTextUserLastName: '',\r\n isValidUserEmail: true,\r\n errorTextUserEmail: '',\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n },\r\n appInfo: {},\r\n searchShipment: true\r\n }\r\n this.onSearch = this.onSearch.bind(this)\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n const { userId, clientId } = this.state\r\n this.setState({ isLoading: true })\r\n\r\n if (userId) {\r\n await this.getClientUserData(clientId, userId)\r\n await this.getClientUserReportsData(clientId, userId)\r\n await this.getClientUserDashboardsData(clientId, userId)\r\n } else {\r\n await this.GetUserEmailSubscriptionList()\r\n await this.GetUserEmailFilterList()\r\n await this.GetClientUserPermissionsList()\r\n await this.getClientUserReportsData(clientId, 'new')\r\n await this.getClientUserDashboardsData(clientId, 'new')\r\n }\r\n\r\n getAppInfo(clientId, data => {\r\n this.setState({ appInfo: data })\r\n if (!userId) {\r\n const copy = JSON.parse(JSON.stringify(data))\r\n this.setState({\r\n user: {\r\n modulePermissionArray: copy.clientModulePermissionArray\r\n }\r\n })\r\n }\r\n })\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._asyncRequest) {\r\n this._asyncRequest.cancel()\r\n }\r\n }\r\n\r\n updateUserField = (value, key) => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user[key] = value\r\n return { user }\r\n })\r\n }\r\n\r\n onSearch(e) {\r\n this.handleChange(e, 'searchShipment', false)\r\n }\r\n\r\n handleChange(event, field, isRequired) {\r\n this.setState({\r\n showFailAlert: false,\r\n showSuccessAlert: false\r\n })\r\n\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = true\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'user-first-name':\r\n this.setState({\r\n errorTextUserFirstName: isValidField\r\n ? ''\r\n : 'First Name ' + msgError,\r\n isValidUserFirstName: isValidField\r\n })\r\n this.updateUserField(value, 'firstName')\r\n break\r\n\r\n case 'user-last-name':\r\n this.setState({\r\n errorTextUserLastName: isValidField\r\n ? ''\r\n : 'Last Name ' + msgError,\r\n isValidUserLastName: isValidField\r\n })\r\n this.updateUserField(value, 'lastName')\r\n break\r\n\r\n case 'user-email':\r\n if (isValidField) {\r\n var emailValid = emailValidation(value)\r\n\r\n if (!emailValid) {\r\n isValidField = false\r\n msgError = 'Email address is not valid.'\r\n isValidForm = false\r\n }\r\n } else {\r\n var _msgErrorEmail = 'Email'.concat(' ', msgError)\r\n msgError = _msgErrorEmail\r\n }\r\n\r\n this.setState({\r\n errorTextUserEmail: msgError,\r\n isValidUserEmail: isValidField\r\n })\r\n\r\n this.updateUserField(value, 'email')\r\n break\r\n\r\n case 'searchShipment':\r\n const searchShipment = this.state.searchShipment\r\n this.setState({ searchShipment: !searchShipment })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm })\r\n }\r\n\r\n handleSubmit = async event => {\r\n const {\r\n userId,\r\n user,\r\n clientId,\r\n isValidForm,\r\n emailSubscriptionList,\r\n emailFilterList,\r\n clientUserPermissionsList\r\n } = this.state\r\n event.preventDefault()\r\n\r\n if (isValidForm) {\r\n let data = null\r\n let isNew = false\r\n\r\n data = {\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n email: user.email,\r\n clientId: clientId,\r\n modulePermissionArray: user.modulePermissionArray,\r\n emailSubscriptionsArray: emailSubscriptionList,\r\n emailFiltersArray: emailFilterList,\r\n clientUserPermissionArray: clientUserPermissionsList\r\n }\r\n\r\n if (userId && user.id) {\r\n data['id'] = user.id\r\n } else {\r\n isNew = true\r\n data['clientId'] = clientId\r\n }\r\n this.saveClientUserDetails(data, isNew)\r\n }\r\n }\r\n\r\n handleCancel(event) {\r\n window.location.href = usersPath.pathname + '/' + this.state.clientId\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n {\r\n this.handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n renderInput = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n adornment,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { user } = this.state\r\n const { classes } = this.props\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleChange(e, id, required)}\r\n {...params}\r\n InputProps={\r\n adornment\r\n ? {\r\n endAdornment: (\r\n \r\n \r\n \r\n )\r\n }\r\n : {}\r\n }\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n handleModuleChange = (key, value) => {\r\n const { user } = this.state\r\n let permissions = null\r\n // check if key exists in array\r\n if (user.modulePermissionArray.some(e => e.propertyKey === key)) {\r\n permissions = user.modulePermissionArray.map(permission => {\r\n if (permission.propertyKey === key) {\r\n permission['value'] = value\r\n }\r\n return permission\r\n })\r\n } else {\r\n permissions = [\r\n ...user.modulePermissionArray,\r\n {\r\n propertyKey: key,\r\n value: value\r\n }\r\n ]\r\n }\r\n\r\n this.setState({\r\n user: {\r\n ...user,\r\n modulePermissionArray: permissions\r\n }\r\n })\r\n }\r\n\r\n handleEmailSubscriptionChange = (key, value) => {\r\n const { emailSubscriptionList } = this.state\r\n const subscriptions = emailSubscriptionList.map(subscription => {\r\n if (subscription.subscriptionId === key) {\r\n subscription['subscribed'] = value\r\n }\r\n return subscription\r\n })\r\n\r\n this.setState({\r\n emailSubscriptionList: subscriptions,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleEmailFilterChange = (key, value) => {\r\n const { emailFilterList } = this.state\r\n const filters = emailFilterList.map(filter => {\r\n if (filter.id === key) {\r\n filter['isChecked'] = value\r\n }\r\n return filter\r\n })\r\n\r\n this.setState({\r\n emailFilterList: filters,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleClientUserPermissionsChange = (key, value) => {\r\n const { clientUserPermissionsList } = this.state\r\n const permissions = clientUserPermissionsList.map(permission => {\r\n if (permission.permissionId === key) {\r\n permission['enabled'] = value\r\n }\r\n return permission\r\n })\r\n\r\n this.setState({\r\n clientUserPermissionsList: permissions,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleReportChange = (key, value) => {\r\n const { reportAccessList } = this.state\r\n const reports = reportAccessList.map(report => {\r\n if (report.reportId === key) {\r\n report['isChecked'] = value\r\n }\r\n return report\r\n })\r\n\r\n this.setState({\r\n reportAccessList: reports\r\n })\r\n }\r\n handleDashboardChange = (key, value) => {\r\n const { dashboardAccessList } = this.state\r\n const dashboards = dashboardAccessList.map(dashboard => {\r\n if (dashboard.dashboardId === key) {\r\n dashboard['isChecked'] = value\r\n }\r\n return dashboard\r\n })\r\n\r\n this.setState({\r\n dashboardAccessList: dashboards\r\n })\r\n }\r\n\r\n render() {\r\n const currentState = this.state\r\n const { appInfo } = this.state\r\n const {\r\n reportAccessList,\r\n dashboardAccessList,\r\n emailSubscriptionList,\r\n emailFilterList,\r\n clientUserPermissionsList,\r\n displayNoDashboards,\r\n displayNoReports\r\n } = this.state\r\n const { classes } = this.props\r\n const canEditSearchShipment =\r\n extractSearchShipment(appInfo.modulePermissionArray) &&\r\n extractSearchShipment(appInfo.clientModulePermissionArray)\r\n const canEditCreateShipment =\r\n extractCreateShipment(appInfo.modulePermissionArray) &&\r\n extractCreateShipment(appInfo.clientModulePermissionArray)\r\n const canEditSeeCustoms =\r\n extractSeeCustoms(appInfo.modulePermissionArray) &&\r\n extractSeeCustoms(appInfo.clientModulePermissionArray)\r\n const canEditSeeAccounting =\r\n extractSeeAccounting(appInfo.modulePermissionArray) &&\r\n extractSeeAccounting(appInfo.clientModulePermissionArray)\r\n const canEditSeeBookings =\r\n extractSeeBooking(appInfo.modulePermissionArray) &&\r\n extractSeeBooking(appInfo.clientModulePermissionArray)\r\n const canEditSeeOrders =\r\n extractSeeOrder(appInfo.modulePermissionArray) &&\r\n extractSeeOrder(appInfo.clientModulePermissionArray)\r\n const canEditCreateOrders =\r\n extractCreateOrder(appInfo.modulePermissionArray) &&\r\n extractCreateOrder(appInfo.clientModulePermissionArray)\r\n const canEditSeeContainers =\r\n extractSeeContainers(appInfo.modulePermissionArray) &&\r\n extractSeeContainers(appInfo.clientModulePermissionArray)\r\n return (\r\n \r\n {this.renderAlert()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'user-first-name',\r\n 'First Name',\r\n 'First Name',\r\n 'firstName',\r\n true,\r\n true,\r\n 'isValidUserFirstName',\r\n 'errorTextUserFirstName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'user-last-name',\r\n 'Last Name',\r\n 'Last Name',\r\n 'lastName',\r\n true,\r\n false,\r\n 'isValidUserLastName',\r\n 'errorTextUserLastName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'user-email',\r\n 'Email',\r\n 'Email',\r\n 'email',\r\n true,\r\n false,\r\n 'isValidUserEmail',\r\n 'errorTextUserEmail'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {usrRole}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleModuleChange(\r\n 'ShipmentSearch',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSearchShipment\r\n }\r\n checked={\r\n !canEditSearchShipment\r\n ? false\r\n : extractSearchShipment(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Search Shipment'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'ShipmentCreate',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditCreateShipment\r\n }\r\n checked={\r\n !canEditCreateShipment\r\n ? false\r\n : extractCreateShipment(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Create Shipment'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'Customs',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeCustoms\r\n }\r\n checked={\r\n !canEditSeeCustoms\r\n ? false\r\n : extractSeeCustoms(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Customs'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'Accounting',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeAccounting\r\n }\r\n checked={\r\n !canEditSeeAccounting\r\n ? false\r\n : extractSeeAccounting(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Accounting'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'Booking',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeBookings\r\n }\r\n checked={\r\n !canEditSeeBookings\r\n ? false\r\n : extractSeeBooking(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Bookings'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'Order',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={!canEditSeeOrders}\r\n checked={\r\n !canEditSeeOrders\r\n ? false\r\n : extractSeeOrder(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Orders'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'CreateOrder',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditCreateOrders\r\n }\r\n checked={\r\n !canEditCreateOrders\r\n ? false\r\n : extractCreateOrder(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Create Order'}\r\n />\r\n {\r\n this.handleModuleChange(\r\n 'Container',\r\n event.target.checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"search\"\r\n disabled={\r\n !canEditSeeContainers\r\n }\r\n checked={\r\n !canEditSeeContainers\r\n ? false\r\n : extractSeeContainers(\r\n this.state\r\n .user\r\n .modulePermissionArray\r\n )\r\n }\r\n />\r\n }\r\n label={'Containers'}\r\n />\r\n \r\n \r\n \r\n \r\n {displayNoReports && (\r\n
No matching data found
\r\n )}\r\n {reportAccessList.map(report => (\r\n {\r\n this.handleReportChange(\r\n report.reportId,\r\n event.target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n report.isChecked\r\n }\r\n />\r\n }\r\n label={report.reportName}\r\n />\r\n ))}\r\n \r\n
\r\n \r\n \r\n {displayNoDashboards && (\r\n
No matching data found
\r\n )}\r\n {dashboardAccessList.map(dashboard => (\r\n {\r\n this.handleDashboardChange(\r\n dashboard.dashboardId,\r\n event.target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n dashboard.isChecked\r\n }\r\n />\r\n }\r\n label={dashboard.dashboardName}\r\n />\r\n ))}\r\n \r\n
\r\n \r\n \r\n {emailSubscriptionList.map(\r\n subscription => (\r\n {\r\n this.handleEmailSubscriptionChange(\r\n subscription.subscriptionId,\r\n event.target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n subscription.subscribed\r\n }\r\n />\r\n }\r\n label={\r\n subscription.subscriptionName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n {emailFilterList.map(filter => (\r\n {\r\n this.handleEmailFilterChange(\r\n filter.id,\r\n event.target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n filter.isChecked\r\n }\r\n />\r\n }\r\n label={filter.value}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n {clientUserPermissionsList.map(\r\n permission => (\r\n {\r\n this.handleClientUserPermissionsChange(\r\n permission.permissionId,\r\n event.target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n permission.enabled\r\n }\r\n />\r\n }\r\n label={\r\n permission.permissionName\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.handleSubmit(e)}\r\n disabled={\r\n !this.state.isValidForm ||\r\n this.state.isPosting ||\r\n this.state.isLoading\r\n }\r\n >\r\n Save\r\n \r\n \r\n \r\n this.handleCancel()}\r\n disabled={currentState.isPosting}\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 async getClientUserData(clientId, userId) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/' + userId + '?clientId=' + clientId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n this.setState({\r\n user: data,\r\n emailSubscriptionList: data.emailSubscriptionsArray\r\n ? data.emailSubscriptionsArray\r\n : [],\r\n emailFilterList: data.emailFiltersArray\r\n ? data.emailFiltersArray\r\n : [],\r\n clientUserPermissionsList: data.clientUserPermissionArray\r\n ? data.clientUserPermissionArray\r\n : []\r\n })\r\n }\r\n }\r\n\r\n //to save the client->user->reports\r\n async getClientUserReportsData(clientid, userid) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetClientUserBIReports/' + clientid + '/' + userid,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n reportAccessList: data\r\n })\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoReports: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n displayNoReports: true,\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n //to get the client->user->dashboards\r\n async getClientUserDashboardsData(clientid, userid) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetClientUserBIDashboards/' + clientid + '/' + userid,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(response => response.json())\r\n .then(data => {\r\n this.setState({\r\n dashboardAccessList: data\r\n })\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoDashboards: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n displayNoDashboards: true,\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n //to save the client->user->reports\r\n async saveClientUserReportsData() {\r\n const token = await authService.getAccessToken()\r\n const { reportAccessList } = this.state\r\n const { clientId, userId } = this.state\r\n let list = []\r\n reportAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n UserId: userId,\r\n ClientId: clientId,\r\n PSAOrganizationId: null,\r\n ReportID: x.reportId,\r\n ReportName: x.reportName\r\n })\r\n }\r\n })\r\n let data = {\r\n UserId: userId,\r\n ClientId: clientId,\r\n Reports: list\r\n }\r\n let errText = ''\r\n await fetch('api/users/SaveUserBIReports', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // Okay\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n\r\n //to save the client->user->dashboards\r\n async saveClientUserDashboardsData(isNew) {\r\n const token = await authService.getAccessToken()\r\n const { dashboardAccessList } = this.state\r\n const { clientId, userId } = this.state\r\n let list = []\r\n dashboardAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n UserId: userId,\r\n ClientId: clientId,\r\n PSAOrganizationId: null,\r\n DashboardID: x.dashboardId,\r\n DashboardName: x.dashboardName\r\n })\r\n }\r\n })\r\n\r\n let data = {\r\n UserId: userId,\r\n ClientId: clientId,\r\n Dashboards: list\r\n }\r\n let errText = ''\r\n await fetch('api/users/SaveUserBIDashboards', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n // okay\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n if (isNew) {\r\n //Go bak to the List\r\n var path = usersPath.pathname + '/' + this.state.clientId\r\n window.location.href = path\r\n }\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n //User -> reports & dashboards (save, get)\r\n\r\n async GetUserEmailSubscriptionList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/GetUserEmailSubscriptionList', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ emailSubscriptionList: data })\r\n }\r\n }\r\n\r\n async GetUserEmailFilterList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/GetUserEmailFilterList', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const emailFiltersArray = await response.json()\r\n this.setState({ emailFilterList: emailFiltersArray })\r\n }\r\n }\r\n\r\n async GetClientUserPermissionsList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/GetClientUserPermissionsList', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clientUserPermissionsList: data })\r\n }\r\n }\r\n\r\n async saveClientUserDetails(data, isNew) {\r\n this.setState({ isPosting: true })\r\n let errText = ''\r\n const token = await authService.getAccessToken()\r\n let url = isNew\r\n ? 'api/users/CreateUser'\r\n : 'api/users/AdminPutUser/' + data.id\r\n let _method = isNew ? 'POST' : 'PUT'\r\n\r\n fetch(url, {\r\n method: _method,\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, *',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'User information is saved.'\r\n return { alert }\r\n })\r\n return response.json()\r\n } else {\r\n errText = 'Code [' + response.status + '] '\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n return response.text()\r\n }\r\n })\r\n .then(d => {\r\n if (d.id) {\r\n this.setState({ userId: d.id }, () => {\r\n this.saveClientUserReportsData()\r\n this.saveClientUserDashboardsData(isNew)\r\n })\r\n } else {\r\n this.setState({ user: data })\r\n }\r\n this.setState({\r\n isPosting: false,\r\n isValidForm: true\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n isPosting: false,\r\n isValidForm: false\r\n })\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n console.log(error)\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(ClientUserDetails)\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport { IconButton, Button, Grid, Paper } from '@material-ui/core'\r\nimport { LinearProgress, Typography } from '@material-ui/core'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport DialogConfirm from './shared/DialogConfirm'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\n\r\nconst adminUserPath = { pathname: `${ApplicationPaths.AdminUsers}` }\r\n\r\nclass AdminUsers extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n isLoading: false,\r\n isPosting: false,\r\n users: [],\r\n user: {\r\n id: 0,\r\n email: '',\r\n notifyError: false,\r\n errMessage: ''\r\n },\r\n dialogOpen: false,\r\n showSuccessAlert: false,\r\n theme: props.theme\r\n }\r\n this.showDialog = this.showDialog.bind(this)\r\n this.sendEmailConfirmEmail = this.sendEmailConfirmEmail.bind(this)\r\n this.populateAdminUsersData = this.populateAdminUsersData.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n this.populateAdminUsersData()\r\n }\r\n\r\n dataToDisplay(dataset) {\r\n if (dataset) {\r\n var UsersArray = []\r\n for (let i = 0; i < dataset.length; i++) {\r\n let usersArray = []\r\n var id = dataset[i].id\r\n var emailConfirmed = dataset[i].emailConfirmed ? 'Yes' : 'No'\r\n var lastLoginDateString = dataset[i].lastLoginAsString\r\n var lastLogin =\r\n lastLoginDateString === ''\r\n ? 'n/a'\r\n : new Date(lastLoginDateString).toLocaleString()\r\n var lastActivityDateString = dataset[i].lastActivityAsString\r\n var lastActivity =\r\n lastActivityDateString === ''\r\n ? 'n/a'\r\n : new Date(lastActivityDateString).toLocaleString()\r\n var firstName = dataset[i].firstName\r\n var lastName = dataset[i].lastName\r\n var email = dataset[i].email\r\n var psaorganizationid = dataset[i].psaOrganizationId\r\n\r\n usersArray.push(id)\r\n usersArray.push(firstName)\r\n usersArray.push(lastName)\r\n usersArray.push(email)\r\n usersArray.push(emailConfirmed)\r\n usersArray.push(lastLogin)\r\n usersArray.push(lastActivity)\r\n usersArray.push(psaorganizationid)\r\n\r\n UsersArray.push(usersArray)\r\n }\r\n return UsersArray\r\n }\r\n }\r\n\r\n showDialog(_user) {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.id = _user.id\r\n user.email = _user.email\r\n return { user }\r\n })\r\n this.setState({ dialogOpen: true })\r\n }\r\n\r\n handleActionsDialog = action => {\r\n if (action) {\r\n this.handleDelete()\r\n }\r\n this.setState({\r\n dialogOpen: !this.state.dialogOpen\r\n })\r\n }\r\n\r\n handleDelete = async event => {\r\n var user = this.state.user\r\n await this.deleteAdminUser(user.id)\r\n }\r\n\r\n hideRowNotify() {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = false\r\n return { user }\r\n })\r\n }\r\n\r\n async sendEmailConfirmEmail(userid) {\r\n this.setState({ isLoading: true })\r\n\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'POST',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n fetch('api/users/SendUserEmailConfirmation/' + userid, options)\r\n .then(res => {\r\n this.setState({ isLoading: false })\r\n if (res.ok) {\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = true\r\n alerts.successMessage =\r\n 'Email confirmation message resent.'\r\n return { alerts }\r\n })\r\n } else {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.id = userid\r\n user.errMessage =\r\n 'Sorry, there was an error resending email confirmation message.'\r\n return { user }\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.id = userid\r\n user.errMessage =\r\n 'Sorry, there was an error resending email confirmation message.'\r\n return { user }\r\n })\r\n console.log(err)\r\n })\r\n }\r\n\r\n render() {\r\n const { user } = this.state\r\n const { classes } = this.props\r\n const data = this.dataToDisplay(this.state.users)\r\n const options = {\r\n filter: false,\r\n viewColumns: false,\r\n print: false,\r\n download: false,\r\n selectableRowsOnClick: true,\r\n selectableRows: 'none',\r\n caseSensitive: false,\r\n rowsPerPageOptions: [10, 15, 25, 50, 100],\r\n filterType: 'dropdown',\r\n responsive: 'stacked',\r\n rowsPerPage: 10,\r\n searchOpen: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n \r\n + Add Admin User\r\n \r\n \r\n )\r\n }\r\n }\r\n const headCells = [\r\n {\r\n id: 'id',\r\n label: 'Id',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n { id: 'firstName', label: 'First Name' },\r\n { id: 'lastName', label: 'Last Name' },\r\n {\r\n id: 'email',\r\n label: 'Email',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var Id = tableMeta.rowData[0]\r\n var email = tableMeta.rowData[3]\r\n\r\n var path = adminUserPath.pathname + '/' + Id\r\n return (\r\n \r\n {email}\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n id: 'emailConfirmed',\r\n label: 'Email Confirmed',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (\r\n <>\r\n {value !== 'Yes' ? (\r\n <>\r\n {value}{' '}\r\n \r\n Resend Email Confirmation\r\n Message\r\n \r\n }\r\n >\r\n \r\n this.sendEmailConfirmEmail(\r\n tableMeta.rowData[0]\r\n )\r\n }\r\n >\r\n Resend\r\n \r\n \r\n \r\n ) : (\r\n value\r\n )}\r\n \r\n )\r\n }\r\n }\r\n },\r\n { id: 'lastLogin', label: 'Last Login' },\r\n { id: 'lastActivity', label: 'Last Activity' },\r\n {\r\n id: 'psaOrganizationId',\r\n label: 'PSA Organization Id',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n id: 'actions',\r\n label: 'Actions',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var email = tableMeta.rowData[3]\r\n var _user = {\r\n id: tableMeta.rowData[0],\r\n email: email\r\n }\r\n\r\n return (\r\n
\r\n this.showDialog(_user)}\r\n >\r\n \r\n \r\n \r\n
\r\n \r\n {this.state.user.email}\r\n \r\n \r\n
\r\n )\r\n }\r\n }\r\n },\r\n {\r\n id: 'result_action',\r\n label: '',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (\r\n
\r\n {this.state.user.notifyError &&\r\n this.state.user.id === tableMeta.rowData[0] ? (\r\n \r\n this.hideRowNotify()}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n )\r\n }\r\n }\r\n }\r\n ]\r\n\r\n return this.state.isLoading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async populateAdminUsersData() {\r\n this.setState({ isLoading: true })\r\n const token = await authService.getAccessToken()\r\n await fetch('api/users/GetAdminsForOrganization', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json()\r\n } else {\r\n return response.text\r\n }\r\n })\r\n .then(d => {\r\n this.setState({\r\n users: d,\r\n isLoading: false\r\n })\r\n })\r\n .catch(err => {\r\n this.setState({ isLoading: false })\r\n console.log(err)\r\n })\r\n }\r\n\r\n async deleteAdminUser(userId) {\r\n this.setState({ isPosting: true })\r\n const token = await authService.getAccessToken()\r\n const options = {\r\n method: 'DELETE',\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n fetch('api/users/DeleteAdmin/' + userId, options)\r\n .then(res => {\r\n if (res.ok) {\r\n this.setState({ isPosting: false })\r\n this.setState({ showSuccessAlert: true })\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user = { id: 0, email: '' }\r\n return { user }\r\n })\r\n this.populateAdminUsersData()\r\n\r\n return Promise.resolve('Users (' + userId + ') deleted.')\r\n } else {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.errMessage =\r\n 'Sorry, there was an error while deleting this user.'\r\n return { user }\r\n })\r\n this.setState({ isPosting: false })\r\n return Promise.reject(\r\n 'An error occurred (' + res.status + ').'\r\n )\r\n }\r\n })\r\n .catch(err => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user.notifyError = true\r\n user.errMessage =\r\n 'Sorry, there was an error while deleting this user.'\r\n return { user }\r\n })\r\n this.setState({ isPosting: false })\r\n console.log(err)\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(AdminUsers)\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { ApplicationPaths } from '../api-authorization/ApiAuthorizationConstants'\r\nimport { IconButton, Paper, Grid } from '@material-ui/core'\r\n\r\nimport MaterialTable from 'material-table'\r\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'\r\nimport RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked'\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n}))\r\n\r\nconst newDataMappingPath = { pathname: `${ApplicationPaths.DataMappingCreate}` }\r\n\r\nexport default function DataMappingIndex(props) {\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [items, setItems] = useState([])\r\n\r\n const tableTheme = createTheme()\r\n const classes = useStyles()\r\n\r\n useEffect(() => {\r\n populateItems()\r\n }, [])\r\n\r\n const headCells = [\r\n {\r\n field: 'propertyType',\r\n title: 'Data Type'\r\n },\r\n {\r\n field: 'propertyKey',\r\n title: 'Code'\r\n },\r\n {\r\n field: 'maxLength',\r\n title: 'Max Code Length'\r\n },\r\n {\r\n field: 'value',\r\n title: 'Description',\r\n render: params => {\r\n var path = `/admin/data_mapping/edit/${params.propertyType}/${params.propertyKey}`\r\n return (\r\n
\r\n {params['value']}\r\n
\r\n )\r\n }\r\n },\r\n {\r\n field: 'isAvailable',\r\n title: 'Is Visible',\r\n render: params => {\r\n return params.isAvailable ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n },\r\n {\r\n field: 'isDefault',\r\n title: 'Is Default',\r\n render: params => {\r\n return params.isDefault ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n },\r\n {\r\n field: 'hasDataLinks',\r\n title: 'Has Data Links',\r\n render: params => {\r\n return params.hasLinks ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n }\r\n ]\r\n\r\n const populateItems = async () => {\r\n setIsLoading(true)\r\n const token = await authService.getAccessToken()\r\n await fetch('api/DataManagement/GetDataTypes?dataTypesRequested=ALL', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const items = await response.json()\r\n setItems(items)\r\n setIsLoading(false)\r\n } else {\r\n return response.text\r\n }\r\n })\r\n .catch(err => {\r\n setIsLoading(false)\r\n console.log(err)\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 return (\r\n \r\n \r\n \r\n ADD\r\n \r\n \r\n )\r\n },\r\n tooltip: 'Add New Data Map',\r\n isFreeAction: true\r\n }\r\n ]}\r\n options={{\r\n filtering: true,\r\n maxBodyHeight:\r\n 'calc(100vh - 348px)',\r\n pageSizeOptions: [25, 50, 75],\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n title: 'Data Mappings',\r\n search: true,\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: true,\r\n exportFileName:\r\n 'DataTypesExport_' + Date.now(),\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n // check if master data\r\n backgroundColor:\r\n rowData.isMasterData\r\n ? '#DADFE8'\r\n : null\r\n })\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n FormControl,\r\n TextField,\r\n Button,\r\n InputLabel,\r\n Select,\r\n MenuItem,\r\n Checkbox,\r\n FormControlLabel,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n CardContent,\r\n Grid\r\n} from '@material-ui/core'\r\nimport AlertMessage from '../shared/Alert'\r\nimport { useForm, Controller } from 'react-hook-form'\r\nimport _, { each, set } from 'lodash'\r\nimport { deleteDataMapping } from '../../utils/data-mapping'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport MaterialTable from 'material-table'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function DataMappingEdit(props) {\r\n const { handleSubmit, errors, control, setValue } = useForm()\r\n const [typesMenu, setTypesMenu] = useState([])\r\n const [firstData, setFirstData] = useState(null) // item\r\n const [secondData, setSecondData] = useState([]) // array\r\n const [links, setLinks] = useState([])\r\n const [typeRules, setTypeRules] = useState([])\r\n const [alert, setAlert] = useState({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n const [isNewMap, setIsNewMap] = useState(false)\r\n const [open, setOpen] = React.useState(false)\r\n const tableTheme = createTheme()\r\n\r\n useEffect(() => {\r\n populateTypeMenus()\r\n\r\n if (props.match.params.propertyType && props.match.params.propertyKey) {\r\n getDataItem(\r\n props.match.params.propertyType,\r\n props.match.params.propertyKey,\r\n false\r\n )\r\n } else {\r\n setIsNewMap(true)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!firstData) return\r\n\r\n const firstDataId = firstData.id\r\n\r\n getExistingLinksForOrg(firstDataId).then(existingLinks => {\r\n setLinks(existingLinks)\r\n })\r\n }, [firstData])\r\n\r\n const renderAlert = () => {\r\n return alert.open ? (\r\n
\r\n {\r\n handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n const renderInput = (\r\n label,\r\n stateValue,\r\n required = true,\r\n disabled = false,\r\n maxLength\r\n ) => {\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {errors[stateValue] && (\r\n

\r\n {errors[stateValue].message}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n const renderTitle = (title, width = 12) => {\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n const populateTypeMenus = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL',\r\n {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n const uniqueTypes = _.uniqBy(data, 'propertyType')\r\n setTypesMenu(uniqueTypes)\r\n } else {\r\n console.log('error GetDataTypes')\r\n }\r\n }\r\n\r\n const getDataItem = async (type, key, isChange) => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataType?dataType=' +\r\n type +\r\n '&dataKey=' +\r\n key,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n if (!isChange) {\r\n setValue('propertyKey', data.propertyKey)\r\n setValue('value', data.value)\r\n setValue('isAvailable', data.isAvailable)\r\n setValue('isDefault', data.isDefault)\r\n }\r\n setValue('propertyType', data.propertyType)\r\n setValue('maxLength', data.maxLength)\r\n\r\n setFirstData(data)\r\n } else {\r\n console.log('error GetDataType')\r\n }\r\n }\r\n\r\n const handleCreateLinksClickOpen = async () => {\r\n await GetDataTypeLinkRules()\r\n setOpen(true)\r\n }\r\n\r\n const GetDataTypeLinkRules = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypeLinkRules',\r\n {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n var rules = await response.json()\r\n setTypeRules(rules)\r\n return\r\n }\r\n return null\r\n }\r\n\r\n const handleCreateLinksClose = () => {\r\n setOpen(false)\r\n }\r\n\r\n const populateKeyMenus = async typeSelected => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n `api/DataManagement/GetRelevantKeys?selectedLinkType=${typeSelected}&dataMappingType=${props.match.params.propertyType}`,\r\n {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`\r\n }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n let newSecondData = await response.json()\r\n\r\n const linkInfo = await getExistingLinksForOrg(firstData.id)\r\n\r\n setLinks(linkInfo)\r\n\r\n newSecondData.map(x => {\r\n x.checked = linkInfo.some(y => y.secondDataId === x.id)\r\n })\r\n setSecondData(newSecondData)\r\n } else {\r\n console.log('error GetRelevantKeys')\r\n }\r\n }\r\n\r\n const getExistingLinksForOrg = async firstDataId => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetExistingLinksForOrg?firstDataId=' +\r\n firstDataId,\r\n {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n )\r\n if (response.ok) {\r\n const existingLinks = await response.json()\r\n return existingLinks\r\n } else {\r\n console.log('error GetExistingLinksForOrg')\r\n return null\r\n }\r\n }\r\n\r\n const handleSecondDataKeyChanged = async (e, secondDataItem) => {\r\n secondDataItem.checked = e.target.checked\r\n var updatedSecoundData = secondData.map(x =>\r\n x.id === secondDataItem.id ? secondDataItem : x\r\n )\r\n setSecondData(updatedSecoundData)\r\n }\r\n\r\n const handleSaveLinks = async () => {\r\n if (firstData.id == null) {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message: 'Please select the first Data Type and Code.'\r\n })\r\n return\r\n } else {\r\n const requestBody = JSON.stringify({\r\n FirstDataId: firstData.id,\r\n SecondDataArray: secondData\r\n })\r\n const token = await authService.getAccessToken()\r\n await fetch('api/DataManagement/PostOrRemoveDataIdsToLinkTable', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: requestBody\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message: 'Data mapping links are saved.'\r\n })\r\n\r\n getExistingLinksForOrg(firstData.id).then(\r\n existingLinks => {\r\n setLinks(existingLinks)\r\n }\r\n )\r\n }\r\n })\r\n .catch(() => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n })\r\n }\r\n }\r\n\r\n const saveDataItem = async data => {\r\n data.id = firstData.id\r\n const token = await authService.getAccessToken()\r\n await fetch('api/dataManagement/PutDataType', {\r\n method: 'PUT',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n\r\n if (response.ok) {\r\n deleteDataMapping()\r\n\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message:\r\n 'Data mapping item information is saved. Redirecting...'\r\n })\r\n\r\n setTimeout(() => {\r\n window.location.replace('/admin/data_mapping')\r\n }, 3000)\r\n\r\n results = response.json()\r\n } else {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this details.'\r\n })\r\n\r\n results = response.text()\r\n }\r\n return results\r\n })\r\n .catch(error => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while saving this Shipment information.'\r\n })\r\n })\r\n }\r\n\r\n const handleFormSubmit = data => {\r\n saveDataItem(prepareData(data))\r\n }\r\n\r\n const prepareData = data => {\r\n const newData = _.clone(_.omitBy(data, _.isNil))\r\n return newData\r\n }\r\n\r\n const handleCloseAlert = () => {\r\n setAlert({\r\n open: false,\r\n success: false,\r\n message: ''\r\n })\r\n }\r\n\r\n const handleRemoveRowIconClick = async (e, rowData) => {\r\n if (!window.confirm('Are you sure you want to remove this link?')) {\r\n return\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n await fetch(\r\n 'api/DataManagement/DeleteDataTypeLink?linkId=' + rowData.id,\r\n {\r\n method: 'DELETE',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n }\r\n )\r\n .then(response => {\r\n if (response.ok) {\r\n setAlert({\r\n open: true,\r\n success: true,\r\n message: 'Data mapping link is removed.'\r\n })\r\n\r\n getExistingLinksForOrg(firstData.id).then(existingLinks => {\r\n setLinks(existingLinks)\r\n })\r\n }\r\n })\r\n .catch(() => {\r\n setAlert({\r\n open: true,\r\n success: false,\r\n message:\r\n 'Sorry, there was an error while removing this link.'\r\n })\r\n })\r\n }\r\n\r\n return (\r\n
\r\n \r\n {renderAlert()}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Data Type\r\n \r\n (\r\n {\r\n onChange(e)\r\n getDataItem(\r\n e.target\r\n .value,\r\n '',\r\n true\r\n )\r\n }}\r\n displayEmpty\r\n inputProps={{\r\n 'aria-label':\r\n 'Without label'\r\n }}\r\n >\r\n {typesMenu.map(\r\n (\r\n item,\r\n index\r\n ) => {\r\n return (\r\n \r\n {\r\n item.propertyType\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n {renderInput(\r\n 'Code' +\r\n (firstData?.maxLength\r\n ? ' (Max ' +\r\n firstData?.maxLength +\r\n ' characters)'\r\n : ''),\r\n 'propertyKey',\r\n true,\r\n false,\r\n firstData?.maxLength\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Description',\r\n 'value',\r\n true,\r\n false\r\n )}\r\n \r\n \r\n {renderInput(\r\n 'Max Code Length',\r\n 'maxLength',\r\n false,\r\n true\r\n )}\r\n \r\n \r\n (\r\n \r\n onChange(\r\n e\r\n .target\r\n .checked\r\n )\r\n }\r\n checked={\r\n value\r\n }\r\n name={name}\r\n color=\"default\"\r\n />\r\n )}\r\n />\r\n }\r\n label=\"Is Visible\"\r\n />\r\n \r\n \r\n (\r\n \r\n onChange(\r\n e\r\n .target\r\n .checked\r\n )\r\n }\r\n checked={\r\n value\r\n }\r\n name={name}\r\n color=\"default\"\r\n />\r\n )}\r\n />\r\n }\r\n label=\"Is Default\"\r\n />\r\n \r\n \r\n
\r\n {props.match.params\r\n .propertyType && (\r\n \r\n Data Type Links\r\n \r\n )}\r\n \r\n \r\n {\r\n 'Create Data Type Links'\r\n }\r\n \r\n \r\n \r\n \r\n \r\n Available\r\n Data\r\n Types\r\n \r\n {\r\n populateKeyMenus(\r\n e\r\n .target\r\n .value\r\n )\r\n }}\r\n displayEmpty\r\n inputProps={{\r\n 'aria-label':\r\n 'Without label'\r\n }}\r\n >\r\n {typesMenu\r\n .filter(\r\n x =>\r\n x.propertyType !==\r\n props\r\n .match\r\n .params\r\n .propertyType\r\n )\r\n .filter(\r\n y =>\r\n typeRules.filter(\r\n z =>\r\n z.firstDataType ===\r\n props\r\n .match\r\n .params\r\n .propertyType &&\r\n z.secondDataType ===\r\n y.propertyType\r\n )\r\n .length >\r\n 0\r\n )\r\n .map(\r\n (\r\n item,\r\n index\r\n ) => (\r\n \r\n {\r\n item.propertyType\r\n }\r\n \r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n Available\r\n Codes\r\n \r\n \r\n {secondData.map(\r\n (\r\n secondDataItem,\r\n index\r\n ) => {\r\n return (\r\n \r\n \r\n handleSecondDataKeyChanged(\r\n e,\r\n secondDataItem\r\n )\r\n }\r\n onClick={e =>\r\n e.stopPropagation()\r\n }\r\n />\r\n {\r\n secondDataItem.propertyKey\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n {' '}\r\n Save Links\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Save\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n handleRemoveRowIconClick(\r\n e,\r\n rowData\r\n )\r\n }\r\n ]}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport {\r\n Card,\r\n CardContent,\r\n FormControlLabel,\r\n Checkbox\r\n} from '@material-ui/core'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { Grid, FormControl } from '@material-ui/core'\r\nimport { Button, TextField, InputAdornment } from '@material-ui/core'\r\nimport RecentActorsIcon from '@material-ui/icons/RecentActors'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { emailValidation } from '../components/shared/Helpers'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport CardTitle from './shared/CardTitle'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\n\r\nimport Paper from '@material-ui/core/Paper'\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel'\r\n\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\n\r\nconst classes = makeStyles(theme => ({\r\n paper: {\r\n padding: theme.spacing(2)\r\n }\r\n}))\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\n\r\nconst adminUsersPath = { pathname: `${ApplicationPaths.AdminUsers}` }\r\nconst usrRole = 'Administrator'\r\n\r\nclass AdminUserDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n userId:\r\n props.match.params.userId !== null &&\r\n props.match.params.userId.toLowerCase() !== 'new'\r\n ? props.match.params.userId\r\n : null,\r\n actions: {\r\n isLoading: this.userId,\r\n isPosting: false\r\n },\r\n reportAccessList: [],\r\n dashboardAccessList: [],\r\n emailSubscriptionList: [],\r\n emailFilterList: [],\r\n displayNoReports: false,\r\n displayNoDashboards: false,\r\n user: [],\r\n organization: null,\r\n requiredFields: [],\r\n isValidForm: false,\r\n isValidUserFirstName: true,\r\n errorTextUserFirstName: '',\r\n isValidUserLastName: true,\r\n errorTextUserLastName: '',\r\n isValidUserEmail: true,\r\n errorTextUserEmail: '',\r\n alert: {\r\n open: false,\r\n success: false,\r\n message: ''\r\n },\r\n searchShipment: true,\r\n expanded: 'panel1'\r\n }\r\n this.onSearch = this.onSearch.bind(this)\r\n this.handleSubmit = this.handleSubmit.bind(this)\r\n this.handleChange = this.handleChange.bind(this)\r\n this.handleACCChange = this.handleACCChange.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n const { userId } = this.state\r\n this.populateConfig()\r\n if (userId) {\r\n this.GetAdminUserData(userId)\r\n this.getAdminUserReportsData(userId)\r\n this.getAdminUserDashboardsData(userId)\r\n } else {\r\n this.GetAdminEmailSubscriptionList()\r\n this.GetUserEmailFilterList()\r\n this.getAdminUserReportsData('new')\r\n this.getAdminUserDashboardsData('new')\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._asyncRequest) {\r\n this._asyncRequest.cancel()\r\n }\r\n }\r\n\r\n updateUserField = (value, key) => {\r\n this.setState(prevState => {\r\n let user = Object.assign({}, prevState.user)\r\n user[key] = value\r\n return { user }\r\n })\r\n }\r\n\r\n onSearch(e) {\r\n this.handleChange(e, 'searchShipment', false)\r\n }\r\n\r\n handleChange(event, field, isRequired) {\r\n this.setState(prevState => {\r\n let alerts = Object.assign({}, prevState.alerts)\r\n alerts.showSuccess = false\r\n alerts.showFail = false\r\n return { alerts }\r\n })\r\n\r\n let value = event.target.value\r\n let isValidField = true\r\n let isValidForm = true\r\n let msgError = ''\r\n\r\n if (value.length === 0 && isRequired) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'cannot be empty.'\r\n }\r\n\r\n switch (field) {\r\n case 'user-first-name':\r\n this.setState({\r\n errorTextUserFirstName: isValidField\r\n ? ''\r\n : 'First Name ' + msgError,\r\n isValidUserFirstName: isValidField\r\n })\r\n this.updateUserField(value, 'firstName')\r\n break\r\n\r\n case 'user-last-name':\r\n this.setState({\r\n errorTextUserLastName: isValidField\r\n ? ''\r\n : 'Last Name ' + msgError,\r\n isValidUserLastName: isValidField\r\n })\r\n this.updateUserField(value, 'lastName')\r\n break\r\n\r\n case 'user-email':\r\n var emailValid = emailValidation(value)\r\n\r\n if (!emailValid) {\r\n isValidField = false\r\n isValidForm = false\r\n msgError = 'Email address is not valid'\r\n }\r\n\r\n this.setState({\r\n errorTextEmail: msgError,\r\n isValidUserEmail: isValidField\r\n })\r\n\r\n this.updateUserField(value, 'email')\r\n break\r\n\r\n case 'searchShipment':\r\n const searchShipment = this.state.searchShipment\r\n this.setState({ searchShipment: !searchShipment })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n\r\n this.setState({ isValidForm: isValidForm })\r\n }\r\n\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n handleSubmit = async event => {\r\n const {\r\n userId,\r\n user,\r\n isValidForm,\r\n emailSubscriptionList,\r\n emailFilterList\r\n } = this.state\r\n event.preventDefault()\r\n\r\n if (isValidForm) {\r\n let isNew = false\r\n\r\n let data = {\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n email: user.email,\r\n emailSubscriptionsArray: emailSubscriptionList,\r\n emailFiltersArray: emailFilterList\r\n }\r\n\r\n if (userId && user.id) {\r\n data['id'] = user.id\r\n } else {\r\n isNew = true\r\n }\r\n\r\n this.saveAdminUserData(data, isNew)\r\n }\r\n }\r\n\r\n handleCancel(event) {\r\n window.location.href = adminUsersPath.pathname\r\n }\r\n\r\n handleCloseAlert() {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = false\r\n alert.success = false\r\n alert.message = ''\r\n return { alert }\r\n })\r\n }\r\n\r\n handleReportChange = (key, value) => {\r\n const { reportAccessList } = this.state\r\n const reports = reportAccessList.map(report => {\r\n if (report.reportId === key) {\r\n report['isChecked'] = value\r\n }\r\n return report\r\n })\r\n this.setState({\r\n reportAccessList: reports,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleEmailSubscriptionChage = (key, value) => {\r\n const { emailSubscriptionList } = this.state\r\n const subscriptions = emailSubscriptionList.map(subscription => {\r\n if (subscription.subscriptionId === key) {\r\n subscription['subscribed'] = value\r\n }\r\n return subscription\r\n })\r\n\r\n this.setState({\r\n emailSubscriptionList: subscriptions,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleEmailFilterChange = (key, value) => {\r\n const { emailFilterList } = this.state\r\n const filters = emailFilterList.map(filter => {\r\n if (filter.id === key) {\r\n filter['isChecked'] = value\r\n }\r\n return filter\r\n })\r\n\r\n this.setState({\r\n emailFilterList: filters,\r\n isValidForm: true\r\n })\r\n }\r\n\r\n handleDashboardChange = (key, value) => {\r\n const { dashboardAccessList } = this.state\r\n const dashboards = dashboardAccessList.map(dashboard => {\r\n if (dashboard.dashboardId === key) {\r\n dashboard['isChecked'] = value\r\n }\r\n return dashboard\r\n })\r\n this.setState({\r\n dashboardAccessList: dashboards,\r\n isValidForm: true\r\n })\r\n }\r\n async populateConfig() {\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({ organization: data })\r\n }\r\n\r\n renderInput = (\r\n id,\r\n label,\r\n placeholder,\r\n orgValue,\r\n required,\r\n adornment,\r\n valid = null,\r\n errorText = null\r\n ) => {\r\n const { user } = this.state\r\n const { classes } = this.props\r\n var params = {}\r\n if (valid !== null && errorText !== null) {\r\n params['helperText'] = !this.state[valid]\r\n ? this.state[errorText]\r\n : ''\r\n params['error'] = !this.state[valid]\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n : null\r\n }\r\n onChange={e => this.handleChange(e, id, required)}\r\n {...params}\r\n />\r\n \r\n \r\n )\r\n }\r\n\r\n renderAlert = () => {\r\n const alert = this.state.alert\r\n return alert.open ? (\r\n
\r\n {\r\n this.handleCloseAlert()\r\n }}\r\n >\r\n {alert.message}\r\n \r\n
\r\n ) : null\r\n }\r\n\r\n render() {\r\n const { isValidForm, actions, searchShipment, expanded } = this.state\r\n const {\r\n reportAccessList,\r\n dashboardAccessList,\r\n emailSubscriptionList,\r\n emailFilterList,\r\n displayNoDashboards,\r\n displayNoReports,\r\n organization\r\n } = this.state\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#ffffff'\r\n const themeRGB =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#000000'\r\n const themeTextColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n return (\r\n
\r\n \r\n {this.renderAlert()}\r\n \r\n \r\n
\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 Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderInput(\r\n 'user-first-name',\r\n 'First Name',\r\n 'First Name',\r\n 'firstName',\r\n true,\r\n true,\r\n 'isValidUserFirstName',\r\n 'errorTextUserFirstName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'user-last-name',\r\n 'Last Name',\r\n 'Last Name',\r\n 'lastName',\r\n true,\r\n false,\r\n 'isValidUserLastName',\r\n 'errorTextUserLastName'\r\n )}\r\n \r\n \r\n {this.renderInput(\r\n 'user-email',\r\n 'Email',\r\n 'Email',\r\n 'email',\r\n true,\r\n false,\r\n 'isValidUserEmail',\r\n 'errorTextUserEmail'\r\n )}\r\n \r\n \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 Role\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\r\n Role\r\n \r\n
\r\n
\r\n {\r\n usrRole\r\n }\r\n
{' '}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Module Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Report Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoReports && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {reportAccessList.map(\r\n report => (\r\n {\r\n this.handleReportChange(\r\n report.reportId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n report.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n report.reportName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Dashboard Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayNoDashboards && (\r\n
\r\n No\r\n matching\r\n data\r\n found\r\n
\r\n )}\r\n {dashboardAccessList.map(\r\n dashboard => (\r\n {\r\n this.handleDashboardChange(\r\n dashboard.dashboardId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n dashboard.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n dashboard.dashboardName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Email\r\n Subscriptions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {emailSubscriptionList.map(\r\n subscription => (\r\n {\r\n this.handleEmailSubscriptionChage(\r\n subscription.subscriptionId,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n subscription.subscribed\r\n }\r\n />\r\n }\r\n label={\r\n subscription.subscriptionName\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n {' '}\r\n Email Filters\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {emailFilterList.map(\r\n filter => (\r\n {\r\n this.handleEmailFilterChange(\r\n filter.id,\r\n event\r\n .target\r\n .checked\r\n )\r\n }}\r\n color=\"default\"\r\n name=\"\"\r\n checked={\r\n filter.isChecked\r\n }\r\n />\r\n }\r\n label={\r\n filter.value\r\n }\r\n />\r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleCancel()\r\n }\r\n disabled={\r\n actions.isPosting\r\n }\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n this.handleSubmit(\r\n e\r\n )\r\n }\r\n disabled={\r\n !isValidForm ||\r\n actions.isPosting ||\r\n actions.isLoading\r\n }\r\n >\r\n Save\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async GetAdminUserData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/' + id, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({\r\n user: data,\r\n emailSubscriptionList: data.emailSubscriptionsArray\r\n ? data.emailSubscriptionsArray\r\n : [],\r\n emailFilterList: data.emailFiltersArray\r\n ? data.emailFiltersArray\r\n : []\r\n })\r\n }\r\n this.setState(prevState => {\r\n let actions = Object.assign({}, prevState.actions)\r\n actions.isLoading = false\r\n return { actions }\r\n })\r\n }\r\n\r\n async saveAdminUserData(data, isNew) {\r\n this.setState({ isPosting: true })\r\n let errText = ''\r\n const token = await authService.getAccessToken()\r\n let url = isNew\r\n ? 'api/users/CreateAdministrator'\r\n : 'api/users/AdminPutUser/' + data.id\r\n let _method = isNew ? 'POST' : 'PUT'\r\n await await fetch(url, {\r\n method: _method,\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n\r\n if (response.ok) {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = true\r\n alert.message = 'User information is saved.'\r\n return { alert }\r\n })\r\n\r\n this.setState(prevState => {\r\n let actions = Object.assign({}, prevState.actions)\r\n actions.isPosting = false\r\n return { actions }\r\n })\r\n\r\n results = response.json()\r\n } else {\r\n if (response.status === 409) {\r\n errText = 'User ID already exists.'\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n }\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n\r\n results = response.text()\r\n }\r\n return results\r\n })\r\n\r\n .then(d => {\r\n if (d.id) {\r\n this.setState({ user: d, userId: data.id })\r\n this.saveAdminUserReportsData()\r\n this.saveAdminUserDashboardsData(isNew)\r\n } else {\r\n this.setState({ user: data })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let actions = Object.assign({}, prevState.actions)\r\n actions.isPosting = false\r\n return { actions }\r\n })\r\n\r\n this.setState({ isValidForm: false })\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n console.log(error)\r\n })\r\n }\r\n\r\n async GetAdminEmailSubscriptionList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetAdminEmailSubscriptionList',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ emailSubscriptionList: data })\r\n }\r\n }\r\n\r\n async GetUserEmailFilterList() {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/GetUserEmailFilterList', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ emailFilterList: data })\r\n }\r\n }\r\n\r\n //to get the organizations->reports\r\n async getAdminUserReportsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/users/GetAdminUserBIReports/' + id, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == null) {\r\n data = []\r\n }\r\n this.setState({\r\n reportAccessList: data\r\n })\r\n\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoReports: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n reportAccessList: []\r\n })\r\n this.setState({\r\n displayNoReports: true,\r\n isPosting: false\r\n })\r\n })\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n //to get the organizations->dashboards\r\n async getAdminUserDashboardsData(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetAdminUserBIDashboards/' + id,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data == null) {\r\n data = []\r\n }\r\n this.setState({\r\n dashboardAccessList: data\r\n })\r\n if (data.length == 0) {\r\n this.setState({\r\n displayNoDashboards: true\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n dashboardAccessList: []\r\n })\r\n this.setState({\r\n displayNoDashboards: true,\r\n isPosting: false\r\n })\r\n })\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n\r\n //to save the org->reports\r\n async saveAdminUserReportsData() {\r\n const token = await authService.getAccessToken()\r\n const { reportAccessList } = this.state\r\n const { userId } = this.state\r\n let list = []\r\n reportAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n UserId: userId,\r\n ClientId: null,\r\n PSAOrganizationId: null,\r\n ReportID: x.reportId,\r\n ReportName: x.reportName\r\n })\r\n }\r\n })\r\n let data = {\r\n UserId: userId,\r\n ClientId: null,\r\n Reports: list\r\n }\r\n let errText = ''\r\n await fetch('api/users/SaveUserBIReports', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n if (response.ok) {\r\n // good\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n results = response.text()\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n //to save the org->dashboards\r\n async saveAdminUserDashboardsData(isNew) {\r\n const token = await authService.getAccessToken()\r\n const { dashboardAccessList } = this.state\r\n const { userId } = this.state\r\n let list = []\r\n dashboardAccessList.map(x => {\r\n if (x.isChecked) {\r\n list.push({\r\n UserId: userId,\r\n ClientId: null,\r\n PSAOrganizationId: null,\r\n DashboardID: x.dashboardId,\r\n DashboardName: x.dashboardName\r\n })\r\n }\r\n })\r\n let data = {\r\n UserId: userId,\r\n ClientId: null,\r\n Dashboards: list\r\n }\r\n let errText = ''\r\n await fetch('api/users/SaveUserBIDashboards', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n let results = null\r\n if (response.ok) {\r\n // good\r\n } else {\r\n errText = 'Code[' + response.status + ']'\r\n\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.' +\r\n errText\r\n return { alert }\r\n })\r\n results = response.text()\r\n }\r\n })\r\n\r\n .then(d => {\r\n this.setState({\r\n isPosting: false\r\n })\r\n if (isNew) {\r\n //Go bak to the List\r\n window.location.href = adminUsersPath.pathname\r\n }\r\n })\r\n .catch(error => {\r\n this.setState(prevState => {\r\n let alert = Object.assign({}, prevState.alert)\r\n alert.open = true\r\n alert.success = false\r\n alert.message =\r\n 'Sorry, there was an error while saving these details.'\r\n return { alert }\r\n })\r\n this.setState({\r\n isPosting: false\r\n })\r\n })\r\n }\r\n}\r\nexport default withStyles(styles)(AdminUserDetails)\r\n","import authService from '../components/api-authorization/AuthorizeService'\r\n\r\nexport async function trackActivity(pathname) {\r\n const token = await authService.getAccessToken()\r\n const activity = JSON.stringify({\r\n pathname: pathname\r\n })\r\n await fetch(`api/Interactions/LogActivity`, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: activity\r\n })\r\n .then(response => {\r\n // thanks for logging\r\n })\r\n .catch(error => {\r\n // thanks for not logging\r\n })\r\n}\r\n","import React from 'react'\r\nimport { PureComponent } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport {\r\n ApplicationPaths,\r\n QueryParameterNames\r\n} from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\nimport { trackActivity } from '../../utils/interactions'\r\n\r\nexport default class AuthorizeRoute extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false,\r\n expanded: 'panel1'\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() =>\r\n this.authenticationChanged()\r\n )\r\n this.populateAuthenticationState()\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._subscription) {\r\n authService.unsubscribe(this._subscription)\r\n }\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state\r\n const redirectUrl = `${ApplicationPaths.Login}?${\r\n QueryParameterNames.ReturnUrl\r\n }=${encodeURI(window.location.href)}`\r\n if (!ready) {\r\n return
\r\n } else {\r\n const { component: PureComponent, ...rest } = this.props\r\n return (\r\n {\r\n if (authenticated) {\r\n trackActivity(props.location.pathname)\r\n return \r\n } else {\r\n return \r\n }\r\n }}\r\n />\r\n )\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authToken = await authService.getAccessToken()\r\n const authenticated = !!authToken\r\n this.setState({ ready: true, authenticated })\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false })\r\n await this.populateAuthenticationState()\r\n }\r\n}\r\n","import React from 'react'\r\nimport { PureComponent } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport {\r\n ApplicationPaths,\r\n QueryParameterNames\r\n} from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\nimport { trackActivity } from '../../utils/interactions'\r\n\r\nexport default class AdminAuthorizeRoute extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() =>\r\n this.authenticationChanged()\r\n )\r\n this.populateAuthenticationState()\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._subscription) {\r\n authService.unsubscribe(this._subscription)\r\n }\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state\r\n const redirectUrl = `${ApplicationPaths.Login}?${\r\n QueryParameterNames.ReturnUrl\r\n }=${encodeURI(window.location.href)}`\r\n if (!ready) {\r\n return
\r\n } else {\r\n const { component: PureComponent, ...rest } = this.props\r\n return (\r\n {\r\n if (authenticated) {\r\n trackActivity(props.location.pathname)\r\n return \r\n } else {\r\n return \r\n }\r\n }}\r\n />\r\n )\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n // check if authenticated then if admin or super admin\r\n const authToken = await authService.getAccessToken()\r\n const authenticated = !!authToken\r\n const admin = await authService.isAdmin()\r\n const superAdmin = await authService.isSuperAdmin()\r\n if (authenticated && (admin || superAdmin)) {\r\n this.setState({ ready: true, authenticated: true })\r\n } else {\r\n this.setState({ ready: true, authenticated: false })\r\n }\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false })\r\n await this.populateAuthenticationState()\r\n }\r\n}\r\n","import React from 'react'\r\nimport { PureComponent } from 'react'\r\nimport authService from './AuthorizeService'\r\nimport { AuthenticationResultStatus } from './AuthorizeService'\r\nimport {\r\n LoginActions,\r\n QueryParameterNames,\r\n ApplicationPaths\r\n} from './ApiAuthorizationConstants'\r\nimport { LinearProgress } from '@material-ui/core'\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n message: undefined\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl())\r\n break\r\n case LoginActions.LoginCallback:\r\n this.clearCache()\r\n this.processLoginCallback()\r\n break\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search)\r\n const error = params.get(QueryParameterNames.Message)\r\n this.setState({ message: error })\r\n break\r\n case LoginActions.Profile:\r\n this.redirectToProfile()\r\n break\r\n case LoginActions.Register:\r\n this.redirectToRegister()\r\n break\r\n default:\r\n throw new Error(`Invalid action '${action}'`)\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action\r\n const { message } = this.state\r\n\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n case LoginActions.LoginCallback:\r\n return \r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return
\r\n default:\r\n throw new Error(`Invalid action '${action}'`)\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl }\r\n const result = await authService.signIn(state)\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl)\r\n break\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message })\r\n break\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`)\r\n }\r\n }\r\n\r\n clearCache = () => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (\r\n key.indexOf('shipment.') !== -1 ||\r\n key.indexOf('custom.') !== -1\r\n ) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href\r\n const result = await authService.completeSignIn(url)\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.')\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state))\r\n break\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message })\r\n break\r\n default:\r\n throw new Error(\r\n `Invalid authentication result status '${result.status}'.`\r\n )\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search)\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl)\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\r\n 'Invalid return url. The return url needs to have the same origin as the current page.'\r\n )\r\n }\r\n return (\r\n (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}/`\r\n )\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(\r\n `${ApplicationPaths.IdentityRegisterPath}?${\r\n QueryParameterNames.ReturnUrl\r\n }=${encodeURI(ApplicationPaths.Login)}`\r\n )\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath)\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl)\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl)\r\n }\r\n}\r\n","import React from 'react'\r\nimport { PureComponent } from 'react'\r\nimport authService from './AuthorizeService'\r\nimport { AuthenticationResultStatus } from './AuthorizeService'\r\nimport {\r\n QueryParameterNames,\r\n LogoutActions,\r\n ApplicationPaths\r\n} from './ApiAuthorizationConstants'\r\nimport { LinearProgress } from '@material-ui/core'\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl())\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({\r\n isReady: true,\r\n message:\r\n 'The logout was not initiated from within the page.'\r\n })\r\n }\r\n break\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback()\r\n break\r\n case LogoutActions.LoggedOut:\r\n this.setState({\r\n isReady: true,\r\n message: 'You successfully logged out!'\r\n })\r\n break\r\n default:\r\n throw new Error(`Invalid action '${action}'`)\r\n }\r\n\r\n this.populateAuthenticationState()\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state\r\n if (!isReady) {\r\n return
\r\n }\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n const action = this.props.action\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n case LogoutActions.LogoutCallback:\r\n case LogoutActions.LoggedOut:\r\n return \r\n default:\r\n throw new Error(`Invalid action '${action}'`)\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl }\r\n const isauthenticated = await authService.isAuthenticated()\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state)\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl)\r\n break\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message })\r\n break\r\n default:\r\n throw new Error('Invalid authentication result status.')\r\n }\r\n } else {\r\n this.setState({ message: 'You successfully logged out!' })\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href\r\n const result = await authService.completeSignOut(url)\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.')\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state))\r\n break\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message })\r\n break\r\n default:\r\n throw new Error('Invalid authentication result status.')\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated()\r\n this.setState({ isReady: true, authenticated })\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search)\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl)\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\r\n 'Invalid return url. The return url needs to have the same origin as the current page.'\r\n )\r\n }\r\n return (\r\n (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.Login}`\r\n )\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl)\r\n }\r\n}\r\n","import React, { PureComponent, Fragment } from 'react'\r\nimport { Route } from 'react-router-dom'\r\nimport { Login } from './Login'\r\nimport { Logout } from './Logout'\r\nimport {\r\n ApplicationPaths,\r\n LoginActions,\r\n LogoutActions\r\n} from './ApiAuthorizationConstants'\r\n\r\nexport default class ApiAuthorizationRoutes extends PureComponent {\r\n render() {\r\n return (\r\n \r\n loginAction(LoginActions.Login)}\r\n />\r\n loginAction(LoginActions.LoginFailed)}\r\n />\r\n loginAction(LoginActions.LoginCallback)}\r\n />\r\n loginAction(LoginActions.Profile)}\r\n />\r\n loginAction(LoginActions.Register)}\r\n />\r\n logoutAction(LogoutActions.Logout)}\r\n />\r\n logoutAction(LogoutActions.LogoutCallback)}\r\n />\r\n logoutAction(LogoutActions.LoggedOut)}\r\n />\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction loginAction(name) {\r\n return \r\n}\r\n\r\nfunction logoutAction(name) {\r\n return \r\n}\r\n","import React, { useEffect } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport ToggleButton from '@material-ui/lab/ToggleButton'\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup'\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle\r\n} from '@material-ui/core'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { CircularProgress } from '@material-ui/core'\r\n\r\nexport const BookingOrdersConsolidation = ({\r\n isOpen,\r\n handleClose,\r\n title,\r\n bookingOrders,\r\n primaryColor,\r\n primaryTextColor\r\n}) => {\r\n const [bookingHeaderValues, setBookingHeaderValues] = React.useState({\r\n orderNumber: '',\r\n orderTransportMode: '',\r\n containerMode: '',\r\n incoTerms: '',\r\n serviceLevel: '',\r\n goodsDescription: '',\r\n packs: 0,\r\n packType: '',\r\n weight: 0,\r\n weightUOM: '',\r\n volume: 0,\r\n volumeUOM: '',\r\n origin: '',\r\n destination: '',\r\n dateDepartEst: '',\r\n dateArriveEst: '',\r\n dateDeliveredEst: ''\r\n })\r\n const [mergedOrderData, setMergedOrderData] = React.useState(null)\r\n const [fetchingMergedOrderData, setFetchingMergedOrderData] =\r\n React.useState(false)\r\n const [mergedOrderDataConflictsFound, setMergedOrderDataConflictsFound] =\r\n React.useState(false)\r\n const [mergedOrderDataConflictMessage, setMergedOrderDataConflictMessage] =\r\n React.useState('')\r\n\r\n // add use effect call to fetch consolidated order data\r\n useEffect(() => {\r\n const fetchConsolidatedOrderData = async () => {\r\n setMergedOrderDataConflictMessage('')\r\n setMergedOrderDataConflictsFound(false)\r\n setFetchingMergedOrderData(true)\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/orders/getconsolidatedorderdata',\r\n {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(bookingOrders)\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n var responseJson = await response.json()\r\n setMergedOrderData(responseJson)\r\n } else {\r\n var responseText = await response.text()\r\n setMergedOrderDataConflictsFound(true)\r\n setMergedOrderDataConflictMessage(responseText)\r\n }\r\n setFetchingMergedOrderData(false)\r\n }\r\n\r\n if (bookingOrders && bookingOrders.length > 0) {\r\n fetchConsolidatedOrderData().catch(error => {\r\n alert(\r\n 'Failed to retrieve consolidated order data, please contact support. ' +\r\n error\r\n )\r\n setFetchingMergedOrderData(false)\r\n })\r\n }\r\n }, [bookingOrders])\r\n\r\n // add use effect call to set booking header values to the first order in the booking orders array\r\n useEffect(() => {\r\n if (bookingOrders && bookingOrders.length > 0) {\r\n // need to retrieve consolidated order data from api\r\n setBookingHeaderValues({\r\n orderNumber: bookingOrders\r\n .map(order => order.orderNumber)\r\n .join(', '), // need to join order numbers together\r\n orderTransportMode:\r\n (\r\n bookingOrders.find(order => order.orderTransportMode) ||\r\n {}\r\n ).orderTransportMode || '',\r\n containerMode:\r\n (\r\n bookingOrders.find(\r\n order => order.containerMode !== null\r\n ) || {}\r\n ).containerMode || '',\r\n incoTerms:\r\n (\r\n bookingOrders.find(order => order.incoTerms !== null) ||\r\n {}\r\n ).incoTerms || '',\r\n serviceLevel:\r\n (\r\n bookingOrders.find(\r\n order => order.serviceLevel !== null\r\n ) || {}\r\n ).serviceLevel || '',\r\n goodsDescription: bookingOrders\r\n .reduce(\r\n (unique, item) =>\r\n unique.includes(item.goodsDescription) ||\r\n !item.goodsDescription\r\n ? unique\r\n : [...unique, item.goodsDescription],\r\n []\r\n )\r\n .join(', '),\r\n packs: mergedOrderData.outerPacks,\r\n packType: mergedOrderData.outerPacksType,\r\n weight: mergedOrderData.weight,\r\n weightUOM: mergedOrderData.weightUOM,\r\n volume: mergedOrderData.volume,\r\n volumeUOM: mergedOrderData.volumeUOM,\r\n origin:\r\n (bookingOrders.find(order => order.origin !== null) || {})\r\n .origin || '',\r\n destination:\r\n (\r\n bookingOrders.find(\r\n order => order.destination !== null\r\n ) || {}\r\n ).destination || '',\r\n dateDepartEst:\r\n (\r\n bookingOrders.find(\r\n order => order.dateDepartEst !== null\r\n ) || {}\r\n ).dateDepartEst || '',\r\n dateArriveEst:\r\n (\r\n bookingOrders.find(\r\n order => order.dateArriveEst !== null\r\n ) || {}\r\n ).dateArriveEst || '',\r\n dateDeliveredEst:\r\n (\r\n bookingOrders.find(\r\n order => order.dateDeliveredEst !== null\r\n ) || {}\r\n ).dateDeliveredEst || '',\r\n supplierCode:\r\n (\r\n bookingOrders.find(\r\n order => order.supplierCode !== null\r\n ) || {}\r\n ).supplierCode || '',\r\n buyerCode:\r\n (\r\n bookingOrders.find(order => order.buyerCode !== null) ||\r\n {}\r\n ).buyerCode || '',\r\n orderNumbersArray: bookingOrders.map(order => {\r\n return {\r\n orderNumber: order.orderNumber,\r\n orderNumberSplit: parseInt(order.orderNumberSplit),\r\n buyerCode: order.buyerCode\r\n }\r\n })\r\n })\r\n }\r\n }, [mergedOrderData])\r\n\r\n const calculateSum = (array, property) => {\r\n const total = array.reduce((accumulator, object) => {\r\n return accumulator + object[property]\r\n }, 0)\r\n\r\n return total\r\n }\r\n\r\n const handleCreateBooking = () => {\r\n localStorage.setItem(\r\n 'newBookingOrderNumber',\r\n bookingOrders[0].orderNumber\r\n )\r\n localStorage.setItem(\r\n 'newBookingOrderNumberSplit',\r\n bookingOrders[0].orderNumberSplit\r\n )\r\n localStorage.setItem(\r\n 'consolidatedOrderData',\r\n JSON.stringify(bookingHeaderValues)\r\n )\r\n localStorage.setItem('bookingOrdersData', JSON.stringify(bookingOrders))\r\n\r\n const currentClientCode = localStorage.getItem('newBookingClientCode')\r\n // check if code matches either order buyer or supplier code, if not then set newBookingClientCode to supplier code\r\n if (\r\n bookingOrders.find(\r\n order => order.buyerCode === currentClientCode\r\n ) ||\r\n bookingOrders.find(\r\n order => order.supplierCode === currentClientCode\r\n )\r\n ) {\r\n // carry on\r\n } else {\r\n localStorage.setItem(\r\n 'newBookingClientCode',\r\n bookingOrders[0].supplierCode\r\n )\r\n }\r\n\r\n // take user to create booking page\r\n window.location.href = '/shipments/create'\r\n }\r\n\r\n const handleSetBookingDestination = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, destination: value })\r\n }\r\n\r\n const handleSetBookingOrigin = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, origin: value })\r\n }\r\n\r\n const handleSetBookingTransportMode = (e, value) => {\r\n setBookingHeaderValues({\r\n ...bookingHeaderValues,\r\n orderTransportMode: value\r\n })\r\n }\r\n\r\n const handleSetBookingContainerType = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, containerMode: value })\r\n }\r\n\r\n const handleSetBookingIncoTerms = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, incoTerms: value })\r\n }\r\n\r\n const handleSetBookingServiceLevel = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, serviceLevel: value })\r\n }\r\n\r\n const handleSetBookingGoodsDescription = (e, value) => {\r\n setBookingHeaderValues({\r\n ...bookingHeaderValues,\r\n goodsDescription: value\r\n })\r\n }\r\n\r\n const handleSetBookingTotalPieces = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, packs: value })\r\n }\r\n\r\n const handleSetBookingPieceUOM = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, packType: value })\r\n }\r\n\r\n const handleSetBookingTotalWeight = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, weight: value })\r\n }\r\n\r\n const handleSetBookingWeightUOM = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, weightUOM: value })\r\n }\r\n\r\n const handleSetBookingTotalVolume = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, volume: value })\r\n }\r\n\r\n const handleSetBookingVolumeUOM = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, volumeUOM: value })\r\n }\r\n\r\n const handleSetBookingRequiredETD = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, dateDepartEst: value })\r\n }\r\n\r\n const handleSetBookingRequiredETA = (e, value) => {\r\n setBookingHeaderValues({ ...bookingHeaderValues, dateArriveEst: value })\r\n }\r\n\r\n const handleSetBookingRequestedDeliveryDate = (e, value) => {\r\n setBookingHeaderValues({\r\n ...bookingHeaderValues,\r\n dateDeliveredEst: value\r\n })\r\n }\r\n\r\n const uniqueOrigins = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.origin) || !item.origin\r\n ? unique\r\n : [...unique, item.origin],\r\n []\r\n )\r\n const uniqueDestinations = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.destination) || !item.destination\r\n ? unique\r\n : [...unique, item.destination],\r\n []\r\n )\r\n const uniqueTransportModes = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.orderTransportMode) || !item.orderTransportMode\r\n ? unique\r\n : [...unique, item.orderTransportMode],\r\n []\r\n )\r\n const uniqueContainerTypes = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.containerMode) || !item.containerMode\r\n ? unique\r\n : [...unique, item.containerMode],\r\n []\r\n )\r\n const uniqueIncoTerms = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.incoTerms) || !item.incoTerms\r\n ? unique\r\n : [...unique, item.incoTerms],\r\n []\r\n )\r\n const uniqueServiceLevels = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.serviceLevel) || !item.serviceLevel\r\n ? unique\r\n : [...unique, item.serviceLevel],\r\n []\r\n )\r\n const uniquePieceUOMs = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.packType) || !item.packType\r\n ? unique\r\n : [...unique, item.packType],\r\n []\r\n )\r\n const uniqueWeightUOMs = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.weightUOM) || !item.weightUOM\r\n ? unique\r\n : [...unique, item.weightUOM],\r\n []\r\n )\r\n const uniqueVolumeUOMs = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.volumeUOM) || !item.volumeUOM\r\n ? unique\r\n : [...unique, item.volumeUOM],\r\n []\r\n )\r\n const uniqueRequiredETDs = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.dateDepartEst) || !item.dateDepartEst\r\n ? unique\r\n : [...unique, item.dateDepartEst],\r\n []\r\n )\r\n const uniqueRequiredETAs = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.dateArriveEst) || !item.dateArriveEst\r\n ? unique\r\n : [...unique, item.dateArriveEst],\r\n []\r\n )\r\n const uniqueRequestedDeliveryDates = bookingOrders.reduce(\r\n (unique, item) =>\r\n unique.includes(item.dateDeliveredEst) || !item.dateDeliveredEst\r\n ? unique\r\n : [...unique, item.dateDeliveredEst],\r\n []\r\n )\r\n\r\n let bookingHeaderConflictsFound = false\r\n\r\n if (\r\n uniqueOrigins.length > 1 ||\r\n uniqueDestinations.length > 1 ||\r\n uniqueTransportModes.length > 1 ||\r\n uniqueContainerTypes.length > 1 ||\r\n uniqueIncoTerms.length > 1 ||\r\n uniqueServiceLevels.length > 1 ||\r\n uniquePieceUOMs.length > 1 ||\r\n uniqueWeightUOMs.length > 1 ||\r\n uniqueVolumeUOMs.length > 1 ||\r\n uniqueRequiredETDs.length > 1 ||\r\n uniqueRequiredETAs.length > 1 ||\r\n uniqueRequestedDeliveryDates.length > 1\r\n ) {\r\n bookingHeaderConflictsFound = true\r\n }\r\n\r\n const renderSelectionGroup = (\r\n title,\r\n valueArray,\r\n valueKey,\r\n handleValueChange,\r\n defaultValue\r\n ) => {\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n {title}\r\n \r\n \r\n {valueArray.map((value, i) => (\r\n \r\n {value}\r\n \r\n ))}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {mergedOrderDataConflictsFound && (\r\n
\r\n

\r\n There are conflicts in the consolidated order\r\n data. Please update the orders.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n {mergedOrderDataConflictMessage}\r\n
\r\n
\r\n )}\r\n {!bookingHeaderConflictsFound &&\r\n !mergedOrderDataConflictsFound &&\r\n !fetchingMergedOrderData && (\r\n
\r\n

\r\n No conflicts found in consolidated order\r\n data - click 'Create Booking' to proceed.\r\n

\r\n
\r\n )}\r\n {bookingHeaderConflictsFound && (\r\n
\r\n

\r\n There are conflicts in the booking header\r\n values. Please select the correct values for\r\n each field.\r\n

\r\n
\r\n )}\r\n \r\n {\r\n // if addresses is empty then display 'no results'\r\n (!bookingOrders || bookingOrders.length === 0) && (\r\n
\r\n

No orders found!

\r\n
\r\n )\r\n }\r\n {uniqueTransportModes.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Transport Mode',\r\n uniqueTransportModes,\r\n 'orderTransportMode',\r\n handleSetBookingTransportMode,\r\n bookingHeaderValues.orderTransportMode\r\n )}\r\n {uniqueContainerTypes.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Container Type',\r\n uniqueContainerTypes,\r\n 'containerMode',\r\n handleSetBookingContainerType,\r\n bookingHeaderValues.containerMode\r\n )}\r\n {uniqueIncoTerms.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Inco Terms',\r\n uniqueIncoTerms,\r\n 'incoTerms',\r\n handleSetBookingIncoTerms,\r\n bookingHeaderValues.incoTerms\r\n )}\r\n {uniqueServiceLevels.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Service Level',\r\n uniqueServiceLevels,\r\n 'serviceLevel',\r\n handleSetBookingServiceLevel,\r\n bookingHeaderValues.serviceLevel\r\n )}\r\n {uniquePieceUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Total Pieces',\r\n [bookingHeaderValues.totalPieces],\r\n 'totalPieces',\r\n handleSetBookingTotalPieces,\r\n bookingHeaderValues.totalPieces\r\n )}\r\n {uniquePieceUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Piece UOM',\r\n uniquePieceUOMs,\r\n 'pieceUOM',\r\n handleSetBookingPieceUOM,\r\n bookingHeaderValues.pieceUOM\r\n )}\r\n {uniqueWeightUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Total Weight',\r\n [bookingHeaderValues.totalWeight],\r\n 'totalWeight',\r\n handleSetBookingTotalWeight,\r\n bookingHeaderValues.totalWeight\r\n )}\r\n {uniqueWeightUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Weight UOM',\r\n uniqueWeightUOMs,\r\n 'weightUOM',\r\n handleSetBookingWeightUOM,\r\n bookingHeaderValues.weightUOM\r\n )}\r\n {uniqueVolumeUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Total Volume',\r\n [bookingHeaderValues.totalVolume],\r\n 'totalVolume',\r\n handleSetBookingTotalVolume,\r\n bookingHeaderValues.totalVolume\r\n )}\r\n {uniqueVolumeUOMs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Volume UOM',\r\n uniqueVolumeUOMs,\r\n 'volumeUOM',\r\n handleSetBookingVolumeUOM,\r\n bookingHeaderValues.volumeUOM\r\n )}\r\n {uniqueOrigins.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Origin',\r\n uniqueOrigins,\r\n 'origin',\r\n handleSetBookingOrigin,\r\n bookingHeaderValues.origin\r\n )}\r\n {uniqueDestinations.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Destination',\r\n uniqueDestinations,\r\n 'destination',\r\n handleSetBookingDestination,\r\n bookingHeaderValues.destination\r\n )}\r\n {uniqueRequiredETDs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Required ETD',\r\n uniqueRequiredETDs,\r\n 'dateDepartEst',\r\n handleSetBookingRequiredETD,\r\n bookingHeaderValues.dateDepartEst\r\n )}\r\n {uniqueRequiredETAs.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Required ETA',\r\n uniqueRequiredETAs,\r\n 'dateArriveEst',\r\n handleSetBookingRequiredETA,\r\n bookingHeaderValues.dateArriveEst\r\n )}\r\n {uniqueRequestedDeliveryDates.length <= 1\r\n ? null\r\n : renderSelectionGroup(\r\n 'Requested Delivery Date',\r\n uniqueRequestedDeliveryDates,\r\n 'dateDeliveredEst',\r\n handleSetBookingRequestedDeliveryDate,\r\n bookingHeaderValues.dateDeliveredEst\r\n )}\r\n \r\n \r\n {fetchingMergedOrderData && }\r\n {!fetchingMergedOrderData && (\r\n <>\r\n \r\n Cancel\r\n \r\n {!mergedOrderDataConflictsFound && (\r\n \r\n Create Booking\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nBookingOrdersConsolidation.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n handleClose: PropTypes.func.isRequired,\r\n title: PropTypes.string.isRequired,\r\n bookingOrders: PropTypes.array.isRequired,\r\n primaryColor: PropTypes.string.isRequired,\r\n primaryTextColor: PropTypes.string.isRequired\r\n}\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { TextField, Tooltip, LinearProgress } from '@material-ui/core'\r\nimport { FormControl, InputLabel, FormHelperText } from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { renderMap } from '../components/shared/MapHelper'\r\nimport { getIconForShipment } from '../components/shared/MapHelper'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { CardContent } from '@material-ui/core'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport MaterialTable from 'material-table'\r\nimport { Paper } from '@material-ui/core'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport localforage, { key } from 'localforage'\r\nimport { sortData } from '../utils/sorting'\r\nimport { BookingOrdersConsolidation } from './shared/BookingOrdersConsolidation'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport TableViewManagementDialog from './shared/TableViewManagementDialog'\r\nimport {\r\n retrieveView,\r\n getViewCodeBySearchItem,\r\n getViewNameBySearchItem,\r\n saveViewColumns\r\n} from './shared/Views'\r\nimport TableViewCreateDialog from './shared/TableViewCreateDialog'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\nimport ClientSelector from '../components/shared/ClientSelector'\r\nimport ScheduledReportsManagementDialog from './shared/ScheduledReportsManagementDialog'\r\nimport ScheduleIcon from '@material-ui/icons/Schedule'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst mapContainerStyle = {\r\n height: '100%',\r\n width: '100%'\r\n}\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass OrdersTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.tableRef = React.createRef()\r\n this.state = {\r\n items: [],\r\n orderList: [],\r\n clients: [],\r\n clientId: null,\r\n organization: null,\r\n selectedDate: 2, // this month\r\n toDate: dateFns.moment().endOf('month'),\r\n fromDate: dateFns.moment().startOf('month'),\r\n minDate: dateFns.moment().startOf('month'),\r\n todayDate: new Date(),\r\n loading: false,\r\n error: false,\r\n rowsPerPage: 50,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'orderNumber',\r\n resultsBox1Value: 0,\r\n resultsBox1Title: '',\r\n resultsBox2Value: 0,\r\n resultsBox2Title: '',\r\n resultsBox3Value: 0,\r\n resultsBox3Title: '',\r\n resultsBox4Value: 0,\r\n resultsBox4Title: '',\r\n resultsBox5Value: 0,\r\n resultsBox5Title: '',\r\n resultsBox6Title: '',\r\n resultsBox6Value: 0,\r\n orderStats: [],\r\n lastCompletedMilestone: 'ALL',\r\n referenceType: 'ALL',\r\n dateView: 'ALL',\r\n itemReference: null,\r\n mode: 'ALL',\r\n theme: props.theme,\r\n searchItem: props.searchItem || 'Orders',\r\n key: props.itemKey || 'order',\r\n downloadCSVDisabled: false,\r\n displayAdvancedSearchProperties: false,\r\n searching: false,\r\n orderSearchTypes: [],\r\n orderFilters: [],\r\n bookingOrderValidationModalOpen: false,\r\n bookingOrders: [],\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: '',\r\n orgHeaderColumns: [],\r\n dateFiltering: [],\r\n userViewId: null,\r\n primaryColor: '#ffffff',\r\n themeTextColor: '#000000',\r\n currentSummaryTile: 1,\r\n createBookingClients: [],\r\n createBookingButtonDisabled: false,\r\n selectedDateHelperText: '',\r\n showScheduledReports: false,\r\n newReportData: null,\r\n canSeeScheduledReports: false\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ searching: true })\r\n\r\n await this.populateConfig()\r\n await this.setClientsWithCreateBookingAccess()\r\n await this.populateClientsData()\r\n }\r\n\r\n async runClientDependentFunctions() {\r\n const referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n this.fetchOrderSearchTypes()\r\n this.initSearch()\r\n this.getOrgHeaderColumns()\r\n\r\n if (!referredFromDetailPage) {\r\n // need to do a dummy data load to get the summary tile data\r\n this.populateTableData(true, true)\r\n }\r\n\r\n await this.setCreateBookingAccess()\r\n this.setState({ searching: false })\r\n }\r\n\r\n handleNewScheduledReport = () => {\r\n // first get report data from search params then open dialog\r\n const newReportData = {\r\n module: this.state.searchItem,\r\n key: this.state.key,\r\n clientId: this.state.clientId,\r\n clientName: this.state.clients.find(\r\n c => c.id === this.state.clientId\r\n ).name,\r\n transportMode: this.state.mode,\r\n referenceType: this.state.referenceType,\r\n referenceTypeDescription: this.state.orderSearchTypes.find(\r\n gst => gst.searchType === this.state.referenceType\r\n ).searchTypeDescription,\r\n itemReference: this.state.itemReference,\r\n dateView: this.state.dateView,\r\n selectedDate: this.state.selectedDate,\r\n dateRange: this.state.dateFiltering.find(\r\n df => df.id === this.state.selectedDate\r\n ).label,\r\n fromDate: this.state.fromDate,\r\n toDate: this.state.toDate,\r\n reportQueryString: this.getQueryString(true, false),\r\n relatedModule: 0\r\n }\r\n this.setState({ newReportData: newReportData }, () => {\r\n this.setState({ showScheduledReports: true })\r\n })\r\n }\r\n\r\n async initSearch() {\r\n // only load search from cache if navigating back from detail page\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForageNoKey('orderFilters')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox6Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox6Title')\r\n await this.loadAndSetFromLocalForage('orderList')\r\n await this.loadAndSetFromLocalForage('items')\r\n await this.loadAndSetFromLocalForage('currentSummaryTile')\r\n // reset 'referred' value in local storage\r\n localStorage.setItem(\r\n 'referredFromDetailPage',\r\n JSON.stringify(false)\r\n )\r\n } else {\r\n // clear order filters?\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('itemReference')\r\n await this.loadAndSetFromLocalStorage('mode')\r\n await this.loadAndSetFromLocalStorage('referenceType')\r\n await this.loadAndSetFromLocalStorage('dateView')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate')\r\n await this.loadAndSetFromLocalStorage('toDate')\r\n }\r\n\r\n getOrgHeaderColumns = async () => {\r\n const { searchItem, clientId } = this.state\r\n const viewCode = getViewCodeBySearchItem(searchItem)\r\n if (clientId) {\r\n const view = await retrieveView(clientId, viewCode)\r\n if (view) {\r\n this.setState({\r\n orgHeaderColumns: view.columnDefinitionsArray,\r\n userViewId: view.id\r\n })\r\n }\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, jsonParse = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n let value = jsonParse\r\n ? await JSON.parse(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (keyName === 'dateView') {\r\n // had to add this due to potential issue reading from storage when updating 'All ' to 'ALL'\r\n if (value?.trim() === 'All' || value?.trim() === 'ALL') {\r\n value = value.toUpperCase().trim()\r\n }\r\n }\r\n\r\n if (value !== null) {\r\n if (value.toLowerCase() === 'null') {\r\n this.setState({ [`${keyName}`]: null })\r\n } else {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForage(keyName) {\r\n const { key } = this.state\r\n const localForageKey = `${key}.${keyName}`\r\n const value = await localforage.getItem(localForageKey)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForageNoKey(keyName) {\r\n const value = await localforage.getItem(keyName)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async fetchOrderSearchTypes() {\r\n const { clientId, key } = this.state\r\n const itemKeyUpper = key?.toUpperCase()\r\n\r\n if (clientId) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetGridSearchTypes?clientId=' +\r\n clientId +\r\n '&module=' +\r\n itemKeyUpper,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ orderSearchTypes: data })\r\n }\r\n }\r\n }\r\n\r\n saveOrderFilterValuesToState = tableRef => {\r\n const newColumnFilters = tableRef.current.state.columns.map(column => ({\r\n field: column.field,\r\n filterValue: column.tableData.filterValue\r\n }))\r\n localforage.setItem('orderFilters', newColumnFilters)\r\n this.setState({ orderFilters: newColumnFilters })\r\n }\r\n\r\n handleRequestSort = (event, property) => {\r\n const { order, orderBy } = this.state\r\n const isAsc = orderBy === property && order === 'asc'\r\n this.setState({ order: isAsc ? 'desc' : 'asc', orderBy: property })\r\n }\r\n\r\n handlePageChange = (event, page) => {\r\n this.setState({ page: page })\r\n }\r\n\r\n handleChangeRowsPerPage = (event, page) => {\r\n this.setState({\r\n rowsPerPage: parseInt(event.target.value, 10),\r\n page: 0\r\n })\r\n }\r\n\r\n getURLForItem = (itemvalue, fieldname) => {\r\n const { clientId, key } = this.state\r\n\r\n var initialPath = `${ApplicationPaths.Orders}`\r\n if (fieldname === 'shipmentNumber') {\r\n initialPath = `${ApplicationPaths.Shipments}`\r\n } else if (key === 'orderline') {\r\n initialPath = `${ApplicationPaths.Orders}`\r\n }\r\n\r\n return {\r\n pathname: initialPath + '/' + clientId + '/' + itemvalue\r\n }\r\n }\r\n\r\n validSearchParameters = () => {\r\n this.setState({\r\n itemReferenceError: false,\r\n itemReferenceErrorMessage: ''\r\n })\r\n\r\n // if selected date is 10 (all time) then make sure the reference isn't null and is at least 3 characters\r\n const { selectedDate, itemReference } = this.state\r\n\r\n // if (parseInt(selectedDate) === 10) {\r\n // if (itemReference === null || itemReference.length < 3) {\r\n // this.setState({\r\n // itemReferenceError: true,\r\n // itemReferenceErrorMessage: '3 characters minimum required for \\'All Time\\' date search.'\r\n // })\r\n // return false\r\n // }\r\n // }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = async event => {\r\n if (this.validSearchParameters()) {\r\n this.saveOrderFilterValuesToState(this.tableRef)\r\n this.populateTableData(event)\r\n }\r\n }\r\n\r\n handleClearAll = async event => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (key.indexOf(`${this.state.key}.`) !== -1) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n\r\n localStorage.removeItem('referredFromDetailPage')\r\n\r\n var lfKeys = []\r\n\r\n await localforage\r\n .keys()\r\n .then(function (keys) {\r\n lfKeys = keys\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n\r\n for (let lfKey of lfKeys) {\r\n if (lfKey.indexOf(this.state.key + '.') !== -1) {\r\n await localforage\r\n .removeItem(lfKey)\r\n .then(function () {\r\n // nothing\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n }\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: //All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: //Custom\r\n from = dateFns.moment.utc(fromDate)\r\n to = dateFns.moment.utc(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: parseInt(value),\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n handleClientSelectChange = selectedClientIds => {\r\n localStorage.setItem(this.state.key + '.clientId', selectedClientIds[0])\r\n this.setState({ clientId: selectedClientIds[0] })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const { key } = this.state\r\n\r\n const customIndex = 11\r\n\r\n switch (elem) {\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'reference-type':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.referenceType', value)\r\n this.setState({\r\n referenceType: value\r\n })\r\n break\r\n\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'mode':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.mode', value)\r\n this.setState({\r\n mode: value\r\n })\r\n break\r\n\r\n case 'reference':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.itemReference', value)\r\n this.setState({\r\n itemReference: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n getDateObject = (time, substract = false) => {\r\n var moment = require('moment')\r\n const format = 'YYYY-MM-DD HH:mm:ss'\r\n var base = substract ? moment().substract(1, 'month') : moment()\r\n return {\r\n From: base.startOf(time).format(format),\r\n To: base.endOf(time).format(format)\r\n }\r\n }\r\n\r\n getDates = () => {\r\n const { selectedDate } = this.state\r\n\r\n if (selectedDate === 0) {\r\n return this.getDateObject('day')\r\n } else if (selectedDate === 1) {\r\n return this.getDateObject('week')\r\n } else if (selectedDate === 2) {\r\n return this.getDateObject('month')\r\n } else if (selectedDate === 3) {\r\n return this.getDateObject('month', true)\r\n } else if (selectedDate === 4) {\r\n return this.getDateObject('year')\r\n }\r\n\r\n return this.getDateObject('day')\r\n }\r\n\r\n renderToolTipOrderRef = orderRefValue => {\r\n var orderRef = ''\r\n var array = []\r\n if (orderRefValue != null) {\r\n array = orderRefValue.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderToolTipDeliveryAddress = delAddressValue => {\r\n var delAddress = ''\r\n var array = []\r\n if (delAddressValue != null) {\r\n array = delAddressValue.split(',')\r\n delAddress = array[0]\r\n }\r\n // remove any empty elements\r\n array = array.filter(function (e) {\r\n return e !== ''\r\n })\r\n\r\n return (\r\n <>\r\n {delAddress}\r\n \r\n
{array.join(', ')}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n async createBooking(rowData) {\r\n const { clientId } = this.state\r\n\r\n let approvecount = rowData.length\r\n // prompt user to confirm they want to create booking for single order\r\n if (approvecount === 1) {\r\n if (\r\n !window.confirm(\r\n `Are you sure you want to create booking for order # ${rowData[0].orderNumber}?`\r\n )\r\n ) {\r\n return\r\n }\r\n } else {\r\n if (\r\n !window.confirm(\r\n `Are you sure you want to create consolidated booking from ${approvecount} orders?` +\r\n `\\n - ${rowData.map(e => e.orderNumber).join('\\n - ')}`\r\n )\r\n ) {\r\n return\r\n }\r\n }\r\n\r\n const currentClient = this.state.clients?.find(e => e.id === clientId)\r\n localStorage.setItem(\r\n 'newBookingClientCode',\r\n currentClient.integrationCompanyCode\r\n )\r\n\r\n // open consolidation modal\r\n this.setState(\r\n {\r\n bookingOrders: rowData\r\n },\r\n () => {\r\n this.setState({ bookingOrderValidationModalOpen: true })\r\n }\r\n )\r\n }\r\n\r\n renderOrdersTable = items => {\r\n const {\r\n organization,\r\n key,\r\n searchItem,\r\n clientId,\r\n clients,\r\n orderFilters,\r\n orgHeaderColumns,\r\n userViewId,\r\n primaryColor,\r\n themeTextColor,\r\n createBookingButtonDisabled,\r\n canSeeScheduledReports\r\n } = this.state\r\n\r\n const tableTheme = createTheme()\r\n const tableViewCode = getViewCodeBySearchItem(this.state.searchItem)\r\n const tableViewName = getViewNameBySearchItem(this.state.searchItem)\r\n\r\n // Have to map new property as column header doesn't match field value\r\n const mappedItems = items.map(item => ({\r\n ...item,\r\n transportMode: item.orderTransportMode\r\n }))\r\n const currentClient = clients?.find(e => e.id === clientId)\r\n\r\n var cachedHeaderKeyValue = ''\r\n if (searchItem === 'OrderLines') {\r\n cachedHeaderKeyValue =\r\n currentClient?.clientView !== 'DEFAULT'\r\n ? 'orderLineHeaders'.concat(\r\n '_',\r\n currentClient?.clientViewId\r\n )\r\n : 'orderLineHeaders'\r\n } else {\r\n cachedHeaderKeyValue =\r\n currentClient?.clientView !== 'DEFAULT'\r\n ? 'orderHeaders'.concat('_', currentClient?.clientViewId)\r\n : 'orderHeaders'\r\n }\r\n\r\n // Map headCells to match required properties for material-table\r\n function getHeaderColumns() {\r\n const columnHeaders =\r\n organization !== null && orgHeaderColumns !== null\r\n ? orgHeaderColumns.map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: headcell.visible ? false : true,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n removable: true,\r\n hiddenByColumnsButton: true,\r\n id: headcell.id,\r\n order: headcell.order,\r\n customTitle: headcell.customTitle,\r\n width: headcell.width\r\n }\r\n })\r\n : []\r\n return columnHeaders\r\n }\r\n\r\n let savedColumns = getHeaderColumns()\r\n\r\n // Need to add the render function as can't store this in localstorage\r\n var columnHeaders = savedColumns.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n customSort: (a, b) => sortData(column, a, b),\r\n hidden: column.hidden,\r\n cellStyle: column.cellStyle,\r\n removable: column.removable,\r\n hiddenByColumnsButton: column.hiddenByColumnsButton,\r\n defaultFilter: getFilter(column.field),\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n render: params => {\r\n if (column.field === 'transportMode') {\r\n return getIconForShipment(params)\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n {\r\n this.saveOrderFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(\r\n params.shipmentNumber,\r\n column.field\r\n )}\r\n >\r\n {params.shipmentNumber}\r\n \r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderToolTipOrderRef(\r\n params.orderReferenceNumber\r\n )\r\n } else if (column.field === 'deliveryAddress') {\r\n return this.renderToolTipDeliveryAddress(\r\n params.deliveryAddress\r\n )\r\n } else if (column.field === 'orderNumber') {\r\n return (\r\n {\r\n this.saveOrderFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(\r\n btoa(params.orderNumber).replace('/', '_') +\r\n '/' +\r\n params.orderNumberSplit,\r\n column.field\r\n )}\r\n >\r\n {params.orderNumber}\r\n \r\n )\r\n } else if (column.field === 'orderFlagged') {\r\n return params.orderFlagged ? 'YES' : null\r\n } else {\r\n return params[column.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n const handleColumnDrag = (sourceIndex, destinationIndex) => {\r\n // take copy of source column\r\n const sourceColumn = savedColumns[sourceIndex]\r\n // remove source column\r\n savedColumns.splice(sourceIndex, 1)\r\n // insert at destination\r\n savedColumns.splice(destinationIndex, 0, sourceColumn)\r\n // update database\r\n const viewCode = getViewCodeBySearchItem(searchItem)\r\n // map savedColumns from frontend to match the database\r\n savedColumns = savedColumns.map(column => {\r\n return {\r\n id: column.id,\r\n title: column.title,\r\n customTitle: column.customTitle,\r\n value: column.field,\r\n width: column.width,\r\n visible: column.hidden ? false : true,\r\n order: column.order,\r\n type: column.type,\r\n sortField: column.sortField\r\n }\r\n })\r\n\r\n this.setState({ orgHeaderColumns: savedColumns })\r\n\r\n saveViewColumns(\r\n viewCode,\r\n savedColumns,\r\n userViewId,\r\n currentClient?.clientViewId,\r\n true,\r\n clientId\r\n )\r\n }\r\n\r\n function handleChangeColumnHidden(column, hidden) {\r\n // Update hidden flag\r\n for (let i = 0; i < savedColumns.length; i++) {\r\n if (savedColumns[i].field === column.field) {\r\n // Set column hidden\r\n savedColumns[i].hidden = hidden\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n break\r\n }\r\n }\r\n }\r\n\r\n function getFilter(field) {\r\n const columnData = orderFilters.find(col => col.field === field)\r\n if (columnData) {\r\n return columnData.filterValue\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n let tableActions = [\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n tooltip: 'Toggle Order Flagged',\r\n onClick: (event, rowData) => {\r\n this.toggleOrderFlagged(rowData)\r\n }\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n {'Create Booking'}\r\n \r\n )\r\n },\r\n tooltip: 'Create Booking',\r\n\r\n onClick: (event, rowData) => {\r\n this.createBooking(rowData)\r\n },\r\n disabled: createBookingButtonDisabled\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n }\r\n ]\r\n\r\n if (canSeeScheduledReports) {\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n this.setState({ showScheduledReports: false })\r\n }\r\n newReportData={this.state.newReportData}\r\n reportSearchTypes={this.state.orderSearchTypes}\r\n reportDateOptions={this.state.dateFiltering}\r\n relatedModule={0}\r\n clients={this.state.clients}\r\n />\r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n return (\r\n \r\n (\r\n \r\n ))\r\n }}\r\n actions={tableActions}\r\n options={{\r\n filtering: true,\r\n filterRowStyle: {\r\n position: 'sticky',\r\n top: 49,\r\n background: 'white',\r\n zIndex: 5 /* optionally */\r\n },\r\n maxBodyHeight: 'calc(100vh - 470px)',\r\n pageSizeOptions: [25, 50, 75],\r\n pageSize: 50,\r\n showTitle: false,\r\n search: true,\r\n sorting: true,\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: true,\r\n toolbar: true,\r\n selection: true,\r\n padding: 'dense',\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n backgroundColor: rowData.orderFlagged\r\n ? '#F8AFA7'\r\n : null\r\n }),\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n organization,\r\n searchItem + 'Export_' + Date.now()\r\n )\r\n }}\r\n onColumnDragged={handleColumnDrag}\r\n onChangeColumnHidden={handleChangeColumnHidden}\r\n />\r\n \r\n )\r\n }\r\n\r\n handleBookingOrderValidationModalClose = () => {\r\n this.setState({ bookingOrderValidationModalOpen: false })\r\n }\r\n\r\n handleBookingOrderValidationModalSubmit = () => {\r\n // something\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n resultsBox6Value,\r\n resultsBox6Title,\r\n key,\r\n currentSummaryTile\r\n } = this.state\r\n\r\n const handleSummaryTileClick = (tileName, tileId) => {\r\n this.saveOrderFilterValuesToState(this.tableRef)\r\n var newOrderList = this.state.items.filter(\r\n i => i.orderStage !== null && i.orderStage.includes(tileName)\r\n )\r\n this.setState({\r\n orderList: newOrderList,\r\n currentSummaryTile: tileId\r\n })\r\n localforage.setItem(key + '.orderList', newOrderList)\r\n localforage.setItem(key + '.currentSummaryTile', tileId)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n orderList: this.state.items,\r\n currentSummaryTile: 1\r\n })\r\n localforage.setItem(\r\n key + '.orderList',\r\n this.state.items\r\n )\r\n localforage.setItem(\r\n key + '.currentSummaryTile',\r\n 1\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox2Title,\r\n 2\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox3Title,\r\n 3\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox4Title,\r\n 4\r\n )\r\n }}\r\n />\r\n \r\n {resultsBox5Title && resultsBox5Value && (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox5Title,\r\n 5\r\n )\r\n }}\r\n />\r\n \r\n )}\r\n {resultsBox6Title && resultsBox6Value && (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox6Title,\r\n 6\r\n )\r\n }}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n const {\r\n clients,\r\n clientId,\r\n selectedDate,\r\n fromDate,\r\n toDate,\r\n minDate,\r\n todayDate,\r\n referenceType,\r\n dateView,\r\n itemReference,\r\n mode,\r\n downloadCSVDisabled,\r\n organization,\r\n itemReferenceError,\r\n itemReferenceErrorMessage,\r\n dateFiltering,\r\n primaryColor,\r\n themeTextColor,\r\n orderList,\r\n selectedDateHelperText,\r\n canSeeScheduledReports\r\n } = this.state\r\n\r\n const currentClient = clients?.find(e => e.id === clientId)\r\n\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an error while\r\n retrieving items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMap(orderList)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Mode\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'mode'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Air\r\n \r\n \r\n Sea\r\n \r\n \r\n Road\r\n \r\n \r\n COU\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Search Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference-type'\r\n )\r\n }\r\n >\r\n {this.state.orderSearchTypes \r\n .filter(type => type.dropdownName === 'Search Type')\r\n .map(\r\n (type, i) => {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Reference # (3 chars min)\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n {this.state.orderSearchTypes \r\n .filter(type => type.dropdownName === 'Date View')\r\n .map(\r\n (type, i) => {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\r\n )\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.handleChangeValue(\r\n e,\r\n 'toDate'\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.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'SEARCH'}\r\n \r\n \r\n \r\n \r\n RESET SEARCH\r\n \r\n \r\n {canSeeScheduledReports && (\r\n \r\n }\r\n >\r\n SCHEDULE REPORT\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {this.renderOrdersTable(\r\n orderList\r\n )}\r\n
\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { clientId, key, searchItem } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/clients/getclientslist?module=orders`,\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients?.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n this.setState({ clientId: cachedClientId }, () => {\r\n this.runClientDependentFunctions()\r\n })\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0]?.id\r\n )\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0]?.id)\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const { key, searchItem } = this.state\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n const showScheduledReports = data.featureAccessParameters.find(\r\n fap => fap.featureCode === 'ScheduledReports'\r\n )\r\n ? true\r\n : false\r\n this.setState({\r\n organization: data,\r\n canSeeScheduledReports:\r\n showScheduledReports && searchItem !== 'OrderLines',\r\n dateFiltering: data.dateFilterTypeArray,\r\n primaryColor: data.colorThemePrimaryRGB,\r\n themeTextColor: data.colorThemeTextRGB\r\n })\r\n localforage.setItem(key + '.organization', data)\r\n }\r\n\r\n getRandomColor = () => {\r\n // generate a light hex color\r\n let color = '#'\r\n for (let i = 0; i < 3; i++)\r\n color += (\r\n '0' +\r\n Math.floor(\r\n ((1 + Math.random()) * Math.pow(16, 2)) / 2\r\n ).toString(16)\r\n ).slice(-2)\r\n return color\r\n }\r\n\r\n getQueryString = (useQuickSearch = true, initialLoad = false) => {\r\n const {\r\n clientId,\r\n referenceType,\r\n fromDate,\r\n toDate,\r\n mode,\r\n itemReference,\r\n dateView,\r\n searchItem,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['SearchItem'] = searchItem\r\n qs['referenceType'] = referenceType\r\n qs['Mode'] = mode\r\n qs['UseQuickSearch'] = useQuickSearch\r\n\r\n if (itemReference !== null && itemReference.length > 1) {\r\n qs['OrderSearchNumber'] = itemReference\r\n }\r\n\r\n qs['DateType'] = dateView\r\n\r\n if (fromDate && selectedDate !== 10){\r\n qs['FromDate'] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10){\r\n qs['ToDate'] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n if (initialLoad) {\r\n qs['InitialLoad'] = true\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async toggleOrderFlagged(rowData) {\r\n let approvecount = rowData.length\r\n\r\n if (approvecount > 1) {\r\n alert('You can only update one order at a time.')\r\n return\r\n }\r\n\r\n if (rowData.shipmentNumber) {\r\n alert('Order has linked shipment, cannot flag.')\r\n } else {\r\n const token = await authService.getAccessToken()\r\n const rawResponse = await fetch('api/orders/FlagOrder', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: this.state.clientId,\r\n FlaggedValue: rowData.orderFlagged ? false : true,\r\n OrderNumber: rowData.orderNumber,\r\n OrderNumberSplit: rowData.orderNumberSplit,\r\n BuyerCode: rowData.buyerCode\r\n })\r\n })\r\n\r\n if (rawResponse.ok) {\r\n // indicate success to user\r\n this.populateTableData()\r\n } else {\r\n var responseText = await rawResponse.text()\r\n if (rawResponse.status === 403) {\r\n // feature not enabled\r\n alert(responseText)\r\n } else {\r\n alert('Failed to flag shipment, please contact support.')\r\n }\r\n }\r\n }\r\n }\r\n\r\n async setClientsWithCreateBookingAccess() {\r\n const token = await authService.getAccessToken()\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/clients/getclientslist?module=CreateBooking`,\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ createBookingClients: data })\r\n }\r\n }\r\n\r\n async setCreateBookingAccess() {\r\n const { clientId, createBookingClients } = this.state\r\n\r\n const createBookingClient = createBookingClients?.find(\r\n c => c.id === clientId\r\n )\r\n\r\n this.setState({\r\n createBookingButtonDisabled: createBookingClient ? false : true\r\n })\r\n }\r\n\r\n async populateTableData(useQuickSearch = true, initialLoad = false) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n await this.setCreateBookingAccess()\r\n\r\n const { clientId, key } = this.state\r\n\r\n this.setState({ searching: true })\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/orders/GetOrders?` +\r\n this.getQueryString(useQuickSearch, initialLoad),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n var tableData = null\r\n\r\n switch (this.state.searchItem) {\r\n case 'OrderLines':\r\n tableData = data.orderLines\r\n break\r\n default:\r\n tableData = data.orders\r\n break\r\n }\r\n\r\n this.setState({\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title,\r\n resultsBox6Value: data.resultsBox6Value,\r\n resultsBox6Title: data.resultsBox6Title\r\n })\r\n\r\n localforage.setItem(key + '.orderList', tableData)\r\n localforage.setItem(key + '.items', tableData)\r\n localStorage.setItem(\r\n key + '.resultsBox1Value',\r\n data.resultsBox1Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox1Title',\r\n data.resultsBox1Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Value',\r\n data.resultsBox2Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Title',\r\n data.resultsBox2Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Value',\r\n data.resultsBox3Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Title',\r\n data.resultsBox3Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Value',\r\n data.resultsBox4Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Title',\r\n data.resultsBox4Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Value',\r\n data.resultsBox5Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Title',\r\n data.resultsBox5Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox6Value',\r\n data.resultsBox6Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox6Title',\r\n data.resultsBox6Title\r\n )\r\n\r\n this.setState({\r\n items: tableData,\r\n orderList: tableData,\r\n loading: false\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(OrdersTable)\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport OrdersTable from './OrdersTable'\r\nimport { canSeeOrders } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function Order() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setIsLoadingShow] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setIsLoadingShow(true)\r\n const data = await response.json()\r\n setShow(await canSeeOrders(data))\r\n setIsLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Orders' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './CardTitle'\r\nimport { Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport { getOrgViewCodeFromOrganization } from '../../utils/organizations'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function OrderInfoCard({ item, organization }) {\r\n const [orgViewCode, setOrgViewCode] = useState(null)\r\n\r\n const theme = useTheme()\r\n\r\n useEffect(() => {\r\n getOrgViewCode()\r\n }, [])\r\n\r\n const getOrgViewCode = async () => {\r\n const viewCode = await getOrgViewCodeFromOrganization()\r\n setOrgViewCode(viewCode)\r\n }\r\n\r\n return (\r\n
\r\n
Order Info
\r\n\r\n \r\n \r\n \r\n \r\n \r\n Order #\r\n \r\n

\r\n {(item !== null && item.orderNumber) || '-'}\r\n

\r\n
\r\n \r\n \r\n Order # Split\r\n \r\n

\r\n {item.orderNumberSplit}\r\n

\r\n
\r\n \r\n \r\n {orgViewCode === 916 ? 'Customer PO #' : ' '}\r\n \r\n

\r\n {orgViewCode === 916 ? item.customString1 : ' '}\r\n

\r\n
\r\n \r\n \r\n Order Date\r\n \r\n

\r\n {(item !== null && item.orderDateString) || '-'}\r\n

\r\n
\r\n \r\n \r\n Transport Mode\r\n \r\n

\r\n {(item !== null && item.orderTransportMode) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n {' '}\r\n \r\n

\r\n {' '}\r\n

\r\n
\r\n \r\n \r\n Supplier\r\n \r\n

\r\n {(item !== null && item.supplierFullName) ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Buyer\r\n \r\n

\r\n {(item !== null && item.buyerFullName) || '-'}\r\n

\r\n
\r\n \r\n \r\n {' '}\r\n \r\n

\r\n {' '}\r\n

\r\n
\r\n \r\n \r\n Origin\r\n \r\n

\r\n {(item !== null && item.originName) || '-'}\r\n

\r\n
\r\n \r\n \r\n Destination\r\n \r\n

\r\n {(item !== null && item.destinationName) || '-'}\r\n

\r\n
\r\n \r\n \r\n {' '}\r\n \r\n

\r\n {' '}\r\n

\r\n
\r\n \r\n \r\n {(item.exWorkRequiredByDateString !== null &&\r\n 'Required ExWorks Date') ||\r\n 'Estimated ExWorks Date'}\r\n \r\n

\r\n {(item !== null &&\r\n item.exWorkRequiredByDateString) ||\r\n item.dateExFactoryEstString ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n {(item.deliveryRequiredByDateString !== null &&\r\n 'Required Delivery Date') ||\r\n 'Estimated Delivery Date'}\r\n \r\n

\r\n {(item !== null &&\r\n item.deliveryRequiredByDateString) ||\r\n item.dateDeliveredEstString ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n {' '}\r\n \r\n

\r\n {' '}\r\n

\r\n
\r\n \r\n \r\n Estimated Lead Time\r\n \r\n

\r\n {(item.leadTime && item.leadTime + ' days') ||\r\n '-'}\r\n

\r\n
\r\n \r\n \r\n Service Level\r\n \r\n

\r\n {(item !== null && item.serviceLevel) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { useTheme } from '@material-ui/core/styles'\r\n\r\nexport default function OrderSupplierInfoCard({ item }) {\r\n const theme = useTheme()\r\n\r\n useEffect(() => {}, [])\r\n\r\n return (\r\n
\r\n
\r\n Supplier Info\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Address\r\n \r\n
\r\n \r\n {(item !== null && item.supplierFullName) ||\r\n ''}\r\n \r\n
\r\n \r\n {(item !== null && item.supplierAddress1) ||\r\n ''}\r\n \r\n
\r\n \r\n {(item !== null && item.supplierAddress2) ||\r\n ''}\r\n \r\n
\r\n \r\n {(item !== null && item.supplierCity) || ''}\r\n ,{' '}\r\n {(item !== null && item.supplierState) ||\r\n ''}\r\n ,{' '}\r\n {(item !== null && item.supplierPostCode) ||\r\n ''}\r\n \r\n
\r\n \r\n {(item !== null &&\r\n item.supplierCountryCode) ||\r\n ''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\n\r\nexport default function OrderSupplierInfoCard({ itemextra }) {\r\n const theme = useTheme()\r\n\r\n useEffect(() => {}, [])\r\n\r\n return (\r\n
\r\n
\r\n Delivery Info\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Address\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.name) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.shortCode) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.addresLine1) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.city) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.state) ||\r\n ''}\r\n ,{' '}\r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.postalCode) ||\r\n ''}\r\n \r\n
\r\n \r\n {(itemextra !== null &&\r\n itemextra.deliveryInfo.country) ||\r\n ''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './CardTitle'\r\nimport { Tooltip, Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { ApplicationPaths } from '../api-authorization/ApiAuthorizationConstants'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function OrderShipmentDetailCard({\r\n item,\r\n itemextra,\r\n clientId,\r\n shipmentdetails\r\n}) {\r\n const theme = useTheme()\r\n\r\n useEffect(() => {}, [])\r\n\r\n return (\r\n
\r\n
\r\n Shipment Info\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Shipment #\r\n \r\n

\r\n {(item && (\r\n \r\n {item.shipmentNumber}\r\n \r\n )) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Housebill #\r\n \r\n

\r\n {(itemextra &&\r\n itemextra.housebillNumber) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Masterbill #\r\n \r\n

\r\n {(shipmentdetails &&\r\n shipmentdetails.masterBillNumber) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n ETD\r\n \r\n

\r\n {(shipmentdetails && shipmentdetails.etd) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n ATD\r\n \r\n

\r\n {(shipmentdetails && shipmentdetails.atd) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n ETA\r\n \r\n

\r\n {(shipmentdetails && shipmentdetails.eta) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n ATA\r\n \r\n

\r\n {(shipmentdetails && shipmentdetails.ata) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Typography } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport { renderTable } from './TableHelper'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function OrderPlanningCard({ itemextra, item }) {\r\n const theme = useTheme()\r\n\r\n const containers = [\r\n { key: 'containerNumber', label: 'Container Number', icon: false },\r\n { key: 'containerCount', label: 'Container Count', icon: false },\r\n { key: 'containerType', label: 'Container Type', icon: false }\r\n ]\r\n\r\n return (\r\n
\r\n
\r\n Planning Info\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Goods Origin\r\n \r\n

\r\n {(itemextra && itemextra.origin) || '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Port Of Loading\r\n \r\n

\r\n {(itemextra && itemextra.loadPort) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Departure Vessel\r\n \r\n

\r\n {(item &&\r\n item.plannedDepartureVessel) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Departure Voyage #\r\n \r\n

\r\n {(item &&\r\n item.plannedDepartureVoyage) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n ETD\r\n \r\n

\r\n {(item && item.dateDepartEstString) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Goods Destination\r\n \r\n

\r\n {(itemextra && itemextra.destination) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Discharge Port\r\n \r\n

\r\n {(itemextra && itemextra.dischargePort) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Arrival Vessel\r\n \r\n

\r\n {(item && item.plannedArrivalVessel) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Arrival Voyage #\r\n \r\n

\r\n {(item && item.plannedArrivalVoyage) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n ETA\r\n \r\n

\r\n {(item && item.dateArriveEstString) ||\r\n '-'}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n Planned Containers\r\n
\r\n \r\n
\r\n {renderTable(\r\n itemextra?.containers,\r\n containers,\r\n 'containers',\r\n classes,\r\n null,\r\n {\r\n maxHeight: '200px'\r\n }\r\n )}\r\n
\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n","// new react function component for port autocomplete\r\nimport React, { useState } from 'react'\r\nimport { Autocomplete } from '@material-ui/lab'\r\nimport { TextField } from '@material-ui/core'\r\n\r\nexport default function PortAutocomplete({\r\n data,\r\n value,\r\n label,\r\n labelRender = () => {},\r\n selectChangeCallback = () => {},\r\n textChangeCallback = () => {},\r\n disabled = false\r\n}) {\r\n return (\r\n {\r\n return option.unloco === value.unloco\r\n }}\r\n onChange={selectChangeCallback}\r\n getOptionLabel={labelRender}\r\n options={data}\r\n loading={false}\r\n disabled={disabled}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Grid } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Typography, TextField, IconButton, Button } from '@material-ui/core'\r\nimport { useTheme } from '@material-ui/core/styles'\r\nimport PortAutocomplete from './PortAutocomplete'\r\nimport { getUNLOCO } from '../../api/api'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker\r\n} from '@material-ui/pickers'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { Table, TableContainer, TableBody } from '@material-ui/core'\r\nimport { TableRow, TableCell, TableHead } from '@material-ui/core'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle'\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport { Select, MenuItem } from '@material-ui/core'\r\nimport {\r\n Card,\r\n CardContent,\r\n CardActions,\r\n CardActionArea,\r\n CardHeader\r\n} from '@material-ui/core'\r\nimport { updateOrderPlanning } from '../../api/api'\r\nimport { Alert, AlertTitle } from '@material-ui/lab'\r\nimport { CircularProgress } from '@material-ui/core'\r\nimport { tryParseInt } from '../../utils/numbers'\r\n\r\nconst classes = makeStyles(theme => ({}))\r\n\r\nexport default function OrderPlanningCardEdit({\r\n itemextra,\r\n item,\r\n organization\r\n}) {\r\n const [originUnlocoCodes, setOriginUnlocoCodes] = useState([])\r\n const [destinationUnlocoCodes, setDestinationUnlocoCodes] = useState([])\r\n const [loadUnlocoCodes, setLoadUnlocoCodes] = useState([])\r\n const [dischargeUnlocoCodes, setDischargeUnlocoCodes] = useState([])\r\n const [loadUNLOCOCodeObject, setLoadUNLOCOCodeObject] = useState(null)\r\n const [dischargeUNLOCOCodeObject, setDischargeUNLOCOCodeObject] =\r\n useState(null)\r\n const [originUNLOCOCodeObject, setOriginUNLOCOCodeObject] = useState(null)\r\n const [destinationUNLOCOCodeObject, setDestinationUNLOCOCodeObject] =\r\n useState(null)\r\n const [plannedDepartureVessel, setPlannedDepartureVessel] = useState('')\r\n const [plannedDepartureVoyage, setPlannedDepartureVoyage] = useState('')\r\n const [dateDepartEst, setDateDepartEst] = useState(null)\r\n const [plannedArrivalVessel, setPlannedArrivalVessel] = useState('')\r\n const [plannedArrivalVoyage, setPlannedArrivalVoyage] = useState('')\r\n const [dateArriveEst, setDateArriveEst] = useState(null)\r\n const [containers, setContainers] = useState([])\r\n const [masterBillNumber, setMasterBillNumber] = useState('')\r\n const [orderBookingNumber, setOrderBookingNumber] = useState('')\r\n const [orderBookingDate, setOrderBookingDate] = useState(null)\r\n const [backgroundColor, setBackgroundColor] = useState('white')\r\n\r\n const [containerTypes, setContainerTypes] = useState([])\r\n const [editing, setEditing] = useState(false)\r\n const [saving, setSaving] = useState(false)\r\n const [showAlert, setShowAlert] = useState(false)\r\n const [alertData, setAlertData] = useState({})\r\n\r\n const theme = useTheme()\r\n const dateFns = new DateFnsUtils()\r\n\r\n useEffect(() => {\r\n if (itemextra) {\r\n setCW1Values()\r\n }\r\n }, [itemextra])\r\n\r\n useEffect(() => {\r\n getContainerTypes()\r\n }, [])\r\n\r\n useEffect(() => {\r\n setBackgroundColor(organization.colorThemeRGB)\r\n }, [organization])\r\n\r\n const renderDatePicker = (pickerValue, dateType) => {\r\n return (\r\n \r\n {\r\n switch (dateType) {\r\n case 'dateDepartEst':\r\n setDateDepartEst(\r\n e ? dateFns.format(e, 'YYYY-MM-DD') : null\r\n )\r\n break\r\n case 'dateArriveEst':\r\n setDateArriveEst(\r\n e ? dateFns.format(e, 'YYYY-MM-DD') : null\r\n )\r\n break\r\n case 'orderBookingDate':\r\n setOrderBookingDate(\r\n e ? dateFns.format(e, 'YYYY-MM-DD') : null\r\n )\r\n break\r\n }\r\n }}\r\n value={pickerValue}\r\n />\r\n \r\n )\r\n }\r\n\r\n const setCW1Values = () => {\r\n if (itemextra.origin && itemextra.origin.length > 4) {\r\n searchUNLOCO(itemextra.origin.substring(0, 5), 'origin', false)\r\n }\r\n if (itemextra.destination && itemextra.destination.length > 4) {\r\n searchUNLOCO(\r\n itemextra.destination.substring(0, 5),\r\n 'destination',\r\n false\r\n )\r\n }\r\n if (itemextra.loadPort && itemextra.loadPort.length > 4) {\r\n searchUNLOCO(itemextra.loadPort.substring(0, 5), 'load', false)\r\n }\r\n if (itemextra.dischargePort && itemextra.dischargePort.length > 4) {\r\n searchUNLOCO(\r\n itemextra.dischargePort.substring(0, 5),\r\n 'discharge',\r\n false\r\n )\r\n }\r\n if (itemextra.containers) {\r\n setContainers(itemextra.containers)\r\n }\r\n setPlannedDepartureVessel(itemextra.plannedDepartureVessel)\r\n setPlannedDepartureVoyage(itemextra.plannedDepartureVoyage)\r\n setDateDepartEst(itemextra.dateDepartEst)\r\n setPlannedArrivalVessel(itemextra.plannedArrivalVessel)\r\n setPlannedArrivalVoyage(itemextra.plannedArrivalVoyage)\r\n setDateArriveEst(itemextra.dateArriveEst)\r\n setMasterBillNumber(itemextra.masterbillNumber)\r\n if (itemextra.customizedFields) {\r\n // iterate through customized fields and set values\r\n for (let i = 0; i < itemextra.customizedFields.length; i++) {\r\n const field = itemextra.customizedFields[i]\r\n if (field.key === 'Carrier_Booking#') {\r\n setOrderBookingNumber(field.value)\r\n } else if (field.key === 'Carrier_BookingDate') {\r\n setOrderBookingDate(field.value)\r\n }\r\n }\r\n }\r\n }\r\n\r\n const updateOrderPlanningData = async data => {\r\n setSaving(true)\r\n updateOrderPlanning(data, handleUpdateSuccess, handleUpdateFailure)\r\n }\r\n\r\n const handleUpdateSuccess = () => {\r\n setShowAlert(true)\r\n setAlertData({\r\n severity: 'success',\r\n title: 'Success',\r\n message: 'Order planning data updated successfully!'\r\n })\r\n setEditing(false)\r\n setSaving(false)\r\n }\r\n\r\n const handleUpdateFailure = () => {\r\n setShowAlert(true)\r\n setAlertData({\r\n severity: 'error',\r\n title: 'Error',\r\n message:\r\n 'Failed to update order planning data, please contact support.'\r\n })\r\n setSaving(false)\r\n }\r\n\r\n const getContainerTypes = async () => {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=CONTAINER_MODE',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n setContainerTypes(data)\r\n }\r\n }\r\n\r\n const handleAddContainer = () => {\r\n setContainers([\r\n ...containers,\r\n {\r\n containerNumber: '',\r\n containerCount: 0,\r\n containerType: ''\r\n }\r\n ])\r\n }\r\n\r\n const handleRemoveContainer = index => {\r\n const newContainers = [...containers]\r\n newContainers.splice(index, 1)\r\n setContainers(newContainers)\r\n }\r\n\r\n const renderResultAlert = () => {\r\n return (\r\n showAlert && (\r\n \r\n \r\n {alertData.title + ': '}\r\n \r\n {alertData.message}\r\n
\r\n )\r\n )\r\n }\r\n\r\n const renderContainersTable = () => {\r\n return (\r\n <>\r\n \r\n Planned Containers\r\n \r\n \r\n \r\n \r\n \r\n \r\n Container Number\r\n \r\n \r\n Count\r\n \r\n \r\n Container Type\r\n \r\n \r\n \r\n \r\n {containers.map((container, index) => {\r\n return (\r\n \r\n \r\n {\r\n const newContainers = [\r\n ...containers\r\n ]\r\n newContainers[\r\n index\r\n ].containerNumber =\r\n e.target.value\r\n setContainers(newContainers)\r\n }}\r\n />\r\n \r\n \r\n {\r\n const newContainers = [\r\n ...containers\r\n ]\r\n newContainers[\r\n index\r\n ].containerCount =\r\n e.target.value\r\n setContainers(newContainers)\r\n }}\r\n />\r\n \r\n \r\n {\r\n const newContainers = [\r\n ...containers\r\n ]\r\n newContainers[\r\n index\r\n ].containerType =\r\n e.target.value\r\n setContainers(newContainers)\r\n }}\r\n >\r\n {containerTypes.map(\r\n containerType => {\r\n return (\r\n \r\n {containerType.propertyKey +\r\n ' - ' +\r\n containerType.value}\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n handleRemoveContainer(index)\r\n }\r\n >\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 Container\r\n \r\n \r\n )\r\n }\r\n\r\n const searchUNLOCO = async (query, portType, isName = true) => {\r\n getUNLOCO(query, isName, async data => {\r\n if (portType === 'origin') {\r\n setOriginUnlocoCodes(data)\r\n } else if (portType === 'destination') {\r\n setDestinationUnlocoCodes(data)\r\n } else if (portType === 'load') {\r\n setLoadUnlocoCodes(data)\r\n } else if (portType === 'discharge') {\r\n setDischargeUnlocoCodes(data)\r\n }\r\n if (data.length === 1) {\r\n if (portType === 'origin') {\r\n setOriginUNLOCOCodeObject(data[0])\r\n } else if (portType === 'destination') {\r\n setDestinationUNLOCOCodeObject(data[0])\r\n } else if (portType === 'load') {\r\n setLoadUNLOCOCodeObject(data[0])\r\n } else if (portType === 'discharge') {\r\n setDischargeUNLOCOCodeObject(data[0])\r\n }\r\n }\r\n })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n Planning Details\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Planned Masterbill #\r\n \r\n {\r\n setMasterBillNumber(e.target.value)\r\n }}\r\n />\r\n \r\n \r\n \r\n Booking #\r\n \r\n {\r\n setOrderBookingNumber(\r\n e.target.value\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n Booking Date\r\n \r\n {renderDatePicker(\r\n orderBookingDate,\r\n 'orderBookingDate'\r\n )}\r\n \r\n \r\n \r\n \r\n Origin Port\r\n \r\n \r\n `${option.unloco} - ${option.portName}`\r\n }\r\n selectChangeCallback={(e, value) => {\r\n setOriginUNLOCOCodeObject(value)\r\n }}\r\n textChangeCallback={e => {\r\n const value = e.target.value\r\n searchUNLOCO(value, 'origin', true)\r\n }}\r\n />\r\n \r\n \r\n \r\n Port Of Loading\r\n \r\n \r\n `${option.unloco} - ${option.portName}`\r\n }\r\n selectChangeCallback={(e, value) => {\r\n setLoadUNLOCOCodeObject(value)\r\n }}\r\n textChangeCallback={e => {\r\n const value = e.target.value\r\n searchUNLOCO(value, 'load', true)\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n Departure Vessel\r\n \r\n {\r\n setPlannedDepartureVessel(\r\n 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 Departure Voyage #\r\n \r\n {\r\n setPlannedDepartureVoyage(\r\n 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 ETD\r\n \r\n {renderDatePicker(\r\n dateDepartEst,\r\n 'dateDepartEst'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n Destination Port\r\n \r\n \r\n `${option.unloco} - ${option.portName}`\r\n }\r\n selectChangeCallback={(e, value) => {\r\n setDestinationUNLOCOCodeObject(\r\n value\r\n )\r\n }}\r\n textChangeCallback={e => {\r\n const value = e.target.value\r\n searchUNLOCO(\r\n value,\r\n 'destination',\r\n true\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n Discharge Port\r\n \r\n \r\n `${option.unloco} - ${option.portName}`\r\n }\r\n selectChangeCallback={(e, value) => {\r\n setDischargeUNLOCOCodeObject(value)\r\n }}\r\n textChangeCallback={e => {\r\n const value = e.target.value\r\n searchUNLOCO(\r\n value,\r\n 'discharge',\r\n true\r\n )\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n Arrival Vessel\r\n \r\n {\r\n setPlannedArrivalVessel(\r\n 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 Arrival Voyage #\r\n \r\n {\r\n setPlannedArrivalVoyage(\r\n 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 ETA\r\n \r\n {renderDatePicker(\r\n dateArriveEst,\r\n 'dateArriveEst'\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {renderContainersTable()}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {/* {\r\n if (editing) {\r\n if (!window.confirm('Cancel editing?')) {\r\n return\r\n }\r\n // reset values and cancel\r\n setCW1Values()\r\n setEditing(false)\r\n } else {\r\n setEditing(true)\r\n }\r\n }}\r\n className={classes.button}>\r\n { editing ? 'Cancel' : 'Edit' }\r\n */}\r\n {\r\n // clear alert data\r\n setShowAlert(false)\r\n const data = {\r\n buyerCode: item.buyerCode,\r\n orderNumber: item.orderNumber,\r\n orderNumberSplit: item.orderNumberSplit,\r\n orderCarrierBookingNumber: orderBookingNumber,\r\n orderCarrierBookingDate: orderBookingDate,\r\n orderTransportMode:\r\n itemextra.orderTransportMode,\r\n masterBillNumber: masterBillNumber,\r\n originPort: originUNLOCOCodeObject?.unloco,\r\n loadPort: loadUNLOCOCodeObject?.unloco,\r\n dischargePort:\r\n dischargeUNLOCOCodeObject?.unloco,\r\n destinationPort:\r\n destinationUNLOCOCodeObject?.unloco,\r\n departureVessel: plannedDepartureVessel,\r\n departureVoyage: plannedDepartureVoyage,\r\n estimatedDeparture: dateDepartEst,\r\n arrivalVessel: plannedArrivalVessel,\r\n arrivalVoyage: plannedArrivalVoyage,\r\n estimatedArrival: dateArriveEst,\r\n containers: containers.map(container => {\r\n return {\r\n containerNumber:\r\n container.containerNumber,\r\n containerCount: tryParseInt(\r\n container.containerCount,\r\n 0\r\n ),\r\n containerType: container.containerType\r\n }\r\n })\r\n }\r\n updateOrderPlanningData(data)\r\n }}\r\n className={classes.button}\r\n >\r\n {saving ? : 'Save'}\r\n \r\n {renderResultAlert()}\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { Suspense, PureComponent } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { Grid } from '@material-ui/core'\r\nimport { Card } from '@material-ui/core'\r\nimport { renderDetailMap } from '../components/shared/MapHelper'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport { renderTable } from '../components/shared/TableHelper'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport CardTitle from './shared/CardTitle'\r\nimport OrderInfoCard from './shared/OrderInfoCard'\r\nimport OrderSupplierInfoCard from './shared/OrderSupplierInfoCard'\r\nimport OrderDeliveryInfoCard from './shared/OrderDeliveryInfoCard'\r\nimport OrderNotesTable from './shared/OrderNotesTable'\r\nimport OrderShipmentDetailCard from './shared/OrderShipmentDetailCard'\r\nimport OrderDetailCard from './shared/OrderDetailCard'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { Paper } from '@material-ui/core'\r\nimport { Typography } from '@material-ui/core'\r\nimport { CardContent } from '@material-ui/core'\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel'\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport DocumentUploadSelectDialog from './shared/DocumentUploadSelectDialog'\r\nimport OrderPlanningCard from './shared/OrderPlanningCard'\r\nimport OrderPlanningCardEdit from './shared/OrderPlanningCardEdit'\r\nimport { clientUserHasPermission } from '../utils/permissions'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n bgColorSection: {\r\n backgroundColor: theme.bgColorSection\r\n }\r\n})\r\n\r\n// we need to lazy load due to speed of downloading docs\r\nconst OrderDocumentsCard = React.lazy(() =>\r\n import('./shared/OrderDocumentsCard')\r\n)\r\n\r\nconst bgColorSection = 'bg-white text-dark'\r\n\r\nconst milestones = [\r\n {\r\n key: 'description',\r\n label: 'Description',\r\n icon: true\r\n },\r\n {\r\n key: 'estimatedDate',\r\n label: 'Estimate',\r\n icon: false\r\n },\r\n {\r\n key: 'actualDate',\r\n label: 'Actual',\r\n icon: false\r\n }\r\n]\r\n\r\nconst routingInfo = [\r\n { key: 'vesselName', label: 'Vessel Name', icon: false },\r\n { key: 'masterBillNumber', label: 'Master Bill', icon: false },\r\n { key: 'legNumber', label: 'Leg #', icon: false },\r\n { key: 'legType', label: 'Leg Type', icon: false },\r\n { key: 'transportMode', label: 'Transport Mode', icon: false },\r\n { key: 'consolMode', label: 'Consol Mode', icon: false },\r\n { key: 'loadPort', label: 'Load Port', icon: false },\r\n { key: 'dischargePort', label: 'Discharge Port', icon: false },\r\n { key: 'voyageFlight', label: 'Voyage Flight', icon: false },\r\n { key: 'vesselLloydsIMO', label: 'IMO Number', icon: false },\r\n { key: 'etd', label: 'ETD', icon: false },\r\n { key: 'eta', label: 'ETA', icon: false },\r\n { key: 'atd', label: 'ATD', icon: false },\r\n { key: 'ata', label: 'ATA', icon: false }\r\n]\r\n\r\nconst orderLines = [\r\n { key: 'partNumber', label: 'Part Number (SKU)', icon: false },\r\n { key: 'partDescription', label: 'Part Description', icon: false },\r\n { key: 'lineNumber', label: 'Line #', icon: false },\r\n { key: 'orderedQty', label: 'Quantity Ordered', icon: false },\r\n { key: 'orderedQtyUnit', label: 'Ordered Unit', icon: false },\r\n { key: 'itemPrice', label: 'Item Price', icon: false },\r\n { key: 'invoicedQty', label: 'Quantity Invoiced', icon: false },\r\n { key: 'receivedQty', label: 'Quantity Received', icon: false },\r\n { key: 'containerNumber', label: 'Container Number', icon: false }\r\n]\r\n\r\nclass OrderDetailPage extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n clientId: props.match.params.clientId,\r\n orderNumber: props.match.params.orderNumber,\r\n orderNumberSplit: props.match.params.orderNumberSplit,\r\n item: null,\r\n itemextra: null,\r\n shipmentdetails: null,\r\n loading: true,\r\n error: false,\r\n dialogOpen: false,\r\n selectedContainer: {},\r\n organization: null,\r\n expanded: 'panel1',\r\n uri: props.uri || 'GetOrder',\r\n client: null,\r\n canEditOrderPlanning: false\r\n }\r\n this.populateOrderData = this.populateOrderData.bind(this)\r\n this.fetchAllOrderData = this.fetchAllOrderData.bind(this)\r\n }\r\n\r\n async componentDidMount() {\r\n await this.populateOrderData()\r\n await this.getOrderPlanningPermission()\r\n }\r\n\r\n getOrderPlanningPermission = async () => {\r\n clientUserHasPermission(this.state.clientId, 'editorderplanning').then(\r\n result => {\r\n this.setState({ canEditOrderPlanning: result })\r\n }\r\n )\r\n }\r\n\r\n handleActionsDialog = action => {\r\n if (action) {\r\n this.handleDelete()\r\n }\r\n\r\n this.setState({\r\n dialogOpen: !this.state.dialogOpen\r\n })\r\n }\r\n handleACCChange = panel => (event, expanded) => {\r\n this.setState({ expanded: expanded ? panel : false })\r\n }\r\n goBack = () => {\r\n localStorage.setItem('referredFromDetailPage', JSON.stringify(true))\r\n this.props.history.goBack()\r\n }\r\n\r\n render() {\r\n const {\r\n loading,\r\n error,\r\n errorMessage,\r\n item,\r\n itemextra,\r\n shipmentdetails,\r\n expanded,\r\n organization,\r\n canEditOrderPlanning\r\n } = this.state\r\n\r\n const { classes } = this.props\r\n\r\n let contents = loading ? (\r\n \r\n ) : (\r\n <>\r\n {error && (\r\n <>\r\n {\r\n this.setState({ error: false })\r\n }}\r\n severity=\"warning\"\r\n >\r\n {errorMessage}\r\n \r\n
\r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {' '}\r\n \r\n Go Back...\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {item != null && (\r\n \r\n )}\r\n
\r\n
\r\n {item != null && (\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n {renderDetailMap(\r\n item?.orderNumber,\r\n item,\r\n itemextra,\r\n organization,\r\n '550px'\r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {item != null && (\r\n \r\n )}\r\n \r\n \r\n {item != null && (\r\n \r\n )}\r\n \r\n \r\n {item != null && (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {itemextra &&\r\n !canEditOrderPlanning && (\r\n \r\n )}\r\n {itemextra &&\r\n canEditOrderPlanning && (\r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n }\r\n className=\"p-0\"\r\n >\r\n \r\n

\r\n Routing\r\n

\r\n \r\n \r\n \r\n \r\n
\r\n {renderTable(\r\n itemextra?.routingInfo ||\r\n shipmentdetails?.routingInfo,\r\n routingInfo,\r\n 'routing',\r\n classes,\r\n null,\r\n {\r\n maxHeight:\r\n '200px'\r\n }\r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n

\r\n Milestones & Order\r\n Lines\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Milestones\r\n
\r\n
\r\n \r\n {renderTable(\r\n itemextra?.milestones,\r\n milestones,\r\n 'milestones',\r\n classes,\r\n null,\r\n {\r\n maxHeight:\r\n '200px'\r\n }\r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n Order\r\n Lines\r\n
\r\n
\r\n \r\n {renderTable(\r\n itemextra?.lines,\r\n orderLines,\r\n 'orderlines',\r\n classes,\r\n null,\r\n {\r\n maxHeight:\r\n '200px'\r\n }\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n >\r\n \r\n

\r\n Notes & Documents\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Notes\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n Documents\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\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
{contents}
\r\n }\r\n\r\n async populateOrderData() {\r\n this.fetchAllOrderData()\r\n .then(([order, orgConfig, clientData]) => {\r\n this.setState(\r\n {\r\n item: order,\r\n organization: orgConfig,\r\n shipmentdetails: order.shipmentDetails,\r\n client: clientData\r\n },\r\n () => {\r\n this.fetchOrderExtraData()\r\n .then(([orderExtra]) => {\r\n this.setState({\r\n itemextra: orderExtra,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n loading: false,\r\n error: true,\r\n errorMessage:\r\n 'Unable to fetch order details from Cargowise One. Please try again later.'\r\n })\r\n })\r\n }\r\n )\r\n })\r\n .catch(error => {\r\n this.setState({\r\n loading: false,\r\n error: true,\r\n errorMessage:\r\n 'Unable to fetch order details. Please try again later.'\r\n })\r\n })\r\n }\r\n\r\n async fetchAllOrderData() {\r\n const { orderNumber, orderNumberSplit, clientId, uri } = this.state\r\n const queryString = require('query-string')\r\n\r\n const qs = {\r\n ClientId: clientId,\r\n OrderSearchNumber: orderNumber,\r\n OrderSearchNumberSplit: orderNumberSplit\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const [orderResponse, orgConfigResponse, clientResponse] =\r\n await Promise.all([\r\n fetch(`api/orders/${uri}?` + queryString.stringify(qs), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }),\r\n fetch('api' + ApplicationPaths.AppInfo),\r\n fetch(`api/clients/` + clientId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n ])\r\n\r\n const order = await orderResponse.json()\r\n const orgConfig = await orgConfigResponse.json()\r\n const clientData = await clientResponse.json()\r\n\r\n return [order, orgConfig, clientData]\r\n }\r\n\r\n async fetchOrderExtraData() {\r\n const { orderNumber, orderNumberSplit, clientId, uri } = this.state\r\n const queryString = require('query-string')\r\n\r\n const qs = {\r\n ClientId: clientId,\r\n OrderSearchNumber: orderNumber,\r\n OrderSearchNumberSplit: orderNumberSplit\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n\r\n const [orderExtraResponse] = await Promise.all([\r\n fetch(`api/orders/${uri}extra?` + queryString.stringify(qs), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n ])\r\n\r\n const orderExtra = await orderExtraResponse.json()\r\n\r\n return [orderExtra]\r\n }\r\n}\r\nexport default withStyles(styles, { withTheme: true })(OrderDetailPage)\r\n","import React, { PureComponent } from 'react'\r\nimport OrderDetailPage from './OrderDetailPage'\r\n\r\nclass OrderDetails extends PureComponent {\r\n render() {\r\n let contents = \r\n\r\n return
{contents}
\r\n }\r\n}\r\nexport default OrderDetails\r\n","import React, { useState, useEffect } from 'react'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport OrdersTable from './OrdersTable'\r\nimport { canSeeOrders } from '../utils/permissions'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function OrderLine() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [loadingShow, setIsLoadingShow] = useState(true)\r\n const [show, setShow] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo()\r\n }, [])\r\n\r\n const getAppInfo = async () => {\r\n const token = await authService.getAccessToken()\r\n\r\n const response = await fetch('api/app/info', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n\r\n setIsLoading(false)\r\n\r\n if (response.ok) {\r\n setIsLoadingShow(true)\r\n const data = await response.json()\r\n setShow(await canSeeOrders(data))\r\n setIsLoadingShow(false)\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {loading || loadingShow ? (\r\n \r\n ) : show ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Order Lines' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { TextField, Tooltip, LinearProgress } from '@material-ui/core'\r\nimport { FormControl, InputLabel, FormHelperText } from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { getIconForShipment, renderMap } from '../components/shared/MapHelper'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { CardContent } from '@material-ui/core'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport MaterialTable from 'material-table'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { Paper } from '@material-ui/core'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport FlagIcon from '@material-ui/icons/Flag'\r\nimport localforage from 'localforage'\r\nimport { sortData } from '../utils/sorting'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText,\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst mapContainerStyle = {\r\n height: '100%',\r\n width: '100%'\r\n}\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass DeliveryTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.tableRef = React.createRef()\r\n this.state = {\r\n items: [],\r\n shipmentList: [],\r\n clients: [],\r\n clientId: null,\r\n organization: null,\r\n selectedDate: 2,\r\n toDate: dateFns.moment().weekday(6),\r\n fromDate: dateFns.moment().weekday(0),\r\n minDate: dateFns.moment().weekday(0),\r\n todayDate: new Date(),\r\n loading: true,\r\n error: false,\r\n rowsPerPage: 50,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'shipmentNumber',\r\n resultsBox1Value: 0,\r\n resultsBox1Title: 'Total Container',\r\n resultsBox2Value: 0,\r\n resultsBox2Title: 'Arrived',\r\n resultsBox3Value: 0,\r\n resultsBox3Title: 'Available',\r\n resultsBox4Value: 0,\r\n resultsBox4Title: 'Delivered',\r\n resultsBox5Value: 0,\r\n resultsBox5Title: null,\r\n lastCompletedMilestone: 'ALL',\r\n referenceType: 'SHIPMENT ID',\r\n dateView: 'ALL',\r\n itemReference: null,\r\n mode: 'ALL',\r\n theme: props.theme,\r\n searchItem: props.searchItem || 'Delivery',\r\n titleIcon: props.titleIcon || 'assignment_turned_in',\r\n key: props.itemKey || 'shipment',\r\n originUNLOCOCodeObject: null,\r\n originName: null,\r\n originCountryCodeObject: null,\r\n destinationUNLOCOCodeObject: null,\r\n destinationName: null,\r\n destinationCountryCodeObject: null,\r\n originUnlocoCodes: [],\r\n originCountryCodes: [],\r\n destinationUnlocoCodes: [],\r\n destinationCountryCodes: [],\r\n downloadCSVDisabled: false,\r\n displayAdvancedSearchProperties: false,\r\n searching: false,\r\n shipmentFilters: [],\r\n orgHeaderColumns: [],\r\n currentSummaryTile: 1,\r\n dateFiltering: [],\r\n selectedDateHelperText: ''\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ loading: true })\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForage('organization')\r\n await this.loadAndSetFromLocalForage('clients')\r\n } else {\r\n await this.populateConfig()\r\n await this.populateClientsData()\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('clientId')\r\n await this.initSearch()\r\n this.setState({ loading: false })\r\n }\r\n\r\n async initSearch() {\r\n // only load search from cache if navigating back from detail page\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForageNoKey('shipmentFilters')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Title')\r\n await this.loadAndSetFromLocalForage('shipmentList')\r\n await this.loadAndSetFromLocalForage('items')\r\n await this.loadAndSetFromLocalForage('currentSummaryTile')\r\n // reset 'referred' value in local storage\r\n localStorage.setItem(\r\n 'referredFromDetailPage',\r\n JSON.stringify(false)\r\n )\r\n } else {\r\n // clear shipmentfilters?\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('itemReference')\r\n await this.loadAndSetFromLocalStorage('mode')\r\n await this.loadAndSetFromLocalStorage('referenceType')\r\n await this.loadAndSetFromLocalStorage('dateView')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate')\r\n await this.loadAndSetFromLocalStorage('toDate')\r\n\r\n const { selectedDate } = this.state\r\n this.setDatesFromDateDropdown(selectedDate)\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, jsonParse = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n const value = jsonParse\r\n ? await JSON.parse(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForage(keyName) {\r\n const { key } = this.state\r\n const localForageKey = `${key}.${keyName}`\r\n const value = await localforage.getItem(localForageKey)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForageNoKey(keyName) {\r\n const value = await localforage.getItem(keyName)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n saveShipmentFilterValuesToState = tableRef => {\r\n const newColumnFilters = tableRef.current.state.columns.map(column => ({\r\n field: column.field,\r\n filterValue: column.tableData.filterValue\r\n }))\r\n localforage.setItem('shipmentFilters', newColumnFilters)\r\n this.setState({ shipmentFilters: newColumnFilters })\r\n }\r\n\r\n getURLForItem = itemvalue => {\r\n const { clientId, key } = this.state\r\n\r\n var initialPath = `${ApplicationPaths.Shipments}`\r\n if (key === 'customs') {\r\n initialPath = `${ApplicationPaths.Customs}`\r\n } else if (key === 'booking') {\r\n initialPath = `${ApplicationPaths.Bookings}`\r\n }\r\n\r\n return {\r\n pathname: initialPath + '/' + clientId + '/' + itemvalue\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n this.populateTableData(event)\r\n }\r\n\r\n handleClearAll = async event => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (key.indexOf(`${this.state.key}.`) !== -1) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n\r\n localStorage.removeItem('referredFromDetailPage')\r\n\r\n var lfKeys = []\r\n\r\n await localforage\r\n .keys()\r\n .then(function (keys) {\r\n lfKeys = keys\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n\r\n for (let lfKey of lfKeys) {\r\n if (lfKey.indexOf(this.state.key + '.') !== -1) {\r\n await localforage\r\n .removeItem(lfKey)\r\n .then(function () {\r\n // nothing\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n }\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: // All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: // Custom\r\n from = dateFns.moment(fromDate)\r\n to = dateFns.moment(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: value,\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const { key } = this.state\r\n\r\n const customIndex = 10\r\n\r\n switch (elem) {\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'reference-type':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.referenceType', value)\r\n this.setState({\r\n referenceType: value\r\n })\r\n break\r\n\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'mode':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.mode', value)\r\n this.setState({\r\n mode: value\r\n })\r\n break\r\n\r\n case 'reference':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.itemReference', value)\r\n this.setState({\r\n itemReference: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n getDateObject = (time, substract = false) => {\r\n var moment = require('moment')\r\n const format = 'YYYY-MM-DD HH:mm:ss'\r\n var base = substract ? moment().substract(1, 'month') : moment()\r\n return {\r\n From: base.startOf(time).format(format),\r\n To: base.endOf(time).format(format)\r\n }\r\n }\r\n\r\n getDates = () => {\r\n const { selectedDate } = this.state\r\n\r\n if (selectedDate === 0) {\r\n return this.getDateObject('day')\r\n } else if (selectedDate === 1) {\r\n return this.getDateObject('week')\r\n } else if (selectedDate === 2) {\r\n return this.getDateObject('month')\r\n } else if (selectedDate === 3) {\r\n return this.getDateObject('month', true)\r\n } else if (selectedDate === 4) {\r\n return this.getDateObject('year')\r\n }\r\n\r\n return this.getDateObject('day')\r\n }\r\n\r\n renderToolTipOrderRef = orderRefValue => {\r\n var orderRef = ''\r\n var array = []\r\n if (orderRefValue != null) {\r\n array = orderRefValue.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderNavLinkOrderRef = (clientId, shipmentData) => {\r\n var orderRefs = shipmentData.orderReferenceNumber\r\n if (orderRefs != null) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (shipmentData.orders) {\r\n var order = shipmentData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return (\r\n
\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n key={index}\r\n to={\r\n '/orders/' +\r\n clientId +\r\n '/' +\r\n btoa(refnum.trim()).replace(\r\n '/',\r\n '_'\r\n ) +\r\n '/' +\r\n order.orderNumberSplit\r\n }\r\n >\r\n {refnum}\r\n \r\n
\r\n )\r\n } else {\r\n return
{refnum}
\r\n }\r\n } else {\r\n return
{refnum}
\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>-\r\n }\r\n }\r\n\r\n renderShipmentsTable = items => {\r\n const {\r\n organization,\r\n key,\r\n searchItem,\r\n clientId,\r\n clients,\r\n shipmentFilters,\r\n orgHeaderColumns\r\n } = this.state\r\n const currentClient = clients.find(e => e.id === clientId)\r\n\r\n let cachedHeaderKeyValue = ''\r\n if (searchItem === 'Customs') {\r\n cachedHeaderKeyValue =\r\n currentClient.customsTableConfigurationArray.length !== 0\r\n ? 'customsHeaders'.concat('_', clientId)\r\n : 'customsHeaders'\r\n } else if (searchItem === 'Bookings') {\r\n cachedHeaderKeyValue =\r\n currentClient.customsTableConfigurationArray.length !== 0\r\n ? 'bookingHeaders'.concat('_', clientId)\r\n : 'bookingHeaders'\r\n } else {\r\n cachedHeaderKeyValue =\r\n currentClient.deliveryTableConfigurationArray.length !== 0\r\n ? 'columnHeaders'.concat('_', clientId)\r\n : 'columnHeaders'\r\n }\r\n\r\n // Have to map new property as column header doesn't match field value\r\n const mappedItems = items.map(item => ({\r\n ...item,\r\n transportMode: item.mode ? item.mode : item.transportMode\r\n }))\r\n\r\n // Map headCells to match required properties for material-table\r\n function getHeaderColumns() {\r\n const columnHeaders =\r\n organization !== null && orgHeaderColumns !== null\r\n ? orgHeaderColumns\r\n .filter(item => item.visible)\r\n .map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: false,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n removable: true,\r\n hiddenByColumnsButton: true\r\n }\r\n })\r\n : []\r\n return columnHeaders\r\n }\r\n\r\n // Checking if key exists in local storage\r\n if (localStorage.getItem(cachedHeaderKeyValue) === null) {\r\n // If key doesn't exists then store the actual column order in local storage\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(getHeaderColumns())\r\n )\r\n } else {\r\n // Add/remove if updated in db\r\n let dbColumns = getHeaderColumns()\r\n let storeColumns = JSON.parse(\r\n localStorage.getItem(cachedHeaderKeyValue)\r\n )\r\n\r\n var i = storeColumns.length\r\n while (i--) {\r\n var dbCol = dbColumns.find(\r\n column => column.field === storeColumns[i].field\r\n )\r\n if (dbCol === undefined) {\r\n // remove column from local storage\r\n storeColumns.splice(i, 1)\r\n } else {\r\n // enforce column metadata from database\r\n storeColumns[i].title = dbCol.title\r\n storeColumns[i].type = dbCol.type\r\n storeColumns[i].sortField = dbCol.sortField\r\n }\r\n }\r\n var i = dbColumns.length\r\n while (i--) {\r\n if (\r\n storeColumns.find(\r\n column => column.field === dbColumns[i].field\r\n ) === undefined\r\n ) {\r\n // add column to local storage\r\n storeColumns.splice(i, 0, dbColumns[i])\r\n }\r\n }\r\n\r\n // update local\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(storeColumns)\r\n )\r\n }\r\n\r\n // Retrieve column data from localstorage\r\n let savedColumns = JSON.parse(\r\n localStorage.getItem(cachedHeaderKeyValue)\r\n )\r\n\r\n // Need to add the render function as can't store this in localstorage\r\n var columnHeaders = savedColumns.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n customSort: (a, b) => sortData(column, a, b),\r\n hidden: column.hidden,\r\n removable: column.removable,\r\n hiddenByColumnsButton: column.hiddenByColumnsButton,\r\n defaultFilter: getFilter(column.field),\r\n render: params => {\r\n if (column.field === 'transportMode') {\r\n return getIconForShipment(params)\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(params.shipmentNumber)}\r\n >\r\n {params.shipmentNumber}\r\n \r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderNavLinkOrderRef(clientId, params)\r\n } else if (column.field === 'orderRef') {\r\n return this.renderToolTipOrderRef(params.orderRef)\r\n } else if (\r\n organization.containerTrackingURL !== null &&\r\n column.field === 'containerNumber' &&\r\n params.containerNumber !== '' &&\r\n params.containerNumber !== null\r\n ) {\r\n return params.containerNumber.split(',').map(c => {\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n c\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n {c}\r\n \r\n )\r\n })\r\n } else if (column.field === 'shipmentFlagged') {\r\n return params.shipmentFlagged ? 'YES' : null\r\n } else {\r\n return params[column.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n function handleColumnDrag(sourceIndex, destinationIndex) {\r\n // take copy of source column\r\n const sourceColumn = savedColumns[sourceIndex]\r\n // remove source column\r\n savedColumns.splice(sourceIndex, 1)\r\n // insert at destination\r\n savedColumns.splice(destinationIndex, 0, sourceColumn)\r\n // update local storage\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n }\r\n\r\n function handleChangeColumnHidden(column, hidden) {\r\n // Update hidden flag\r\n for (let i = 0; i < savedColumns.length; i++) {\r\n if (savedColumns[i].field === column.field) {\r\n // Set column hidden\r\n savedColumns[i].hidden = hidden\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n break\r\n }\r\n }\r\n }\r\n\r\n function getFilter(field) {\r\n const columnData = shipmentFilters.find(col => col.field === field)\r\n if (columnData) {\r\n return columnData.filterValue\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n (\r\n \r\n ))\r\n }}\r\n actions={[\r\n {\r\n icon: () => {\r\n return \r\n },\r\n tooltip: 'Toggle Shipment Flagged',\r\n onClick: (event, rowData) => {\r\n this.toggleShipmentFlagged(rowData)\r\n }\r\n }\r\n ]}\r\n options={{\r\n filtering: true,\r\n maxBodyHeight: 'calc(100vh - 348px)',\r\n pageSizeOptions: [25, 50, 75],\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: true,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n // check if 'hot order'\r\n backgroundColor: rowData.shipmentFlagged\r\n ? '#F8AFA7'\r\n : null\r\n }),\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n this.state.organization,\r\n searchItem + 'Export_' + Date.now()\r\n )\r\n }}\r\n onColumnDragged={handleColumnDrag}\r\n onChangeColumnHidden={handleChangeColumnHidden}\r\n />\r\n )\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n key,\r\n currentSummaryTile\r\n } = this.state\r\n\r\n const handleSummaryTileClick = (tileName, tileId) => {\r\n // these may have changed\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n var newShipmentList = this.state.items.filter(\r\n i => i.status !== null && i.status.includes(tileName)\r\n )\r\n this.setState({\r\n shipmentList: newShipmentList,\r\n currentSummaryTile: tileId\r\n })\r\n localforage.setItem(key + '.shipmentList', newShipmentList)\r\n localforage.setItem(key + '.currentSummaryTile', tileId)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n shipmentList: this.state.items,\r\n currentSummaryTile: 1\r\n })\r\n localforage.setItem(\r\n key + '.shipmentList',\r\n this.state.items\r\n )\r\n localforage.setItem(\r\n key + '.currentSummaryTile',\r\n 1\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox2Title,\r\n 2\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox3Title,\r\n 3\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox4Title,\r\n 4\r\n )\r\n }}\r\n />\r\n \r\n {resultsBox5Title !== null ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox5Title,\r\n 5\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n\r\n const {\r\n clients,\r\n clientId,\r\n selectedDate,\r\n fromDate,\r\n toDate,\r\n minDate,\r\n todayDate,\r\n referenceType,\r\n dateView,\r\n itemReference,\r\n mode,\r\n organization,\r\n titleIcon,\r\n dateFiltering,\r\n shipmentList,\r\n selectedDateHelperText\r\n } = this.state\r\n\r\n const currentClient = clients.find(e => e.id === clientId)\r\n\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#ffffff'\r\n const themeRGB =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#000000'\r\n const themeTextColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n

\r\n {this.state.searchItem + ' Search'}\r\n

\r\n {titleIcon}\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an error while\r\n retrieving items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMap(shipmentList)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n c.id ===\r\n clientId\r\n ) === -1\r\n ? clients[0].id\r\n : clientId\r\n : clients[0].id\r\n }\r\n onChange={e =>\r\n this.handleChangeValue(\r\n e,\r\n 'client'\r\n )\r\n }\r\n >\r\n {clients.map(function (\r\n client,\r\n i\r\n ) {\r\n return (\r\n \r\n {client.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Mode\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'mode'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Air\r\n \r\n \r\n Sea\r\n \r\n \r\n Road\r\n \r\n \r\n COU\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Search Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference-type'\r\n )\r\n }\r\n >\r\n {this.state.searchItem ===\r\n 'Bookings' ? (\r\n \r\n Booking #\r\n \r\n ) : (\r\n \r\n Shipment #\r\n \r\n )}\r\n \r\n House Bill\r\n \r\n \r\n Master Bill\r\n \r\n \r\n Linked Order Refs\r\n \r\n \r\n Order Refs\r\n \r\n \r\n Owner Refs\r\n \r\n \r\n Shipper's Ref\r\n \r\n \r\n Container #\r\n \r\n \r\n Vessel\r\n \r\n \r\n Supplier Id\r\n \r\n \r\n Carrier Id\r\n \r\n {currentClient.clientView ===\r\n 'CLARK' ? (\r\n \r\n Origin Country Code\r\n \r\n ) : null}\r\n \r\n Delivery Warehouse Id\r\n \r\n \r\n All\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Reference # (3 chars min)\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n {this.state\r\n .searchItem ===\r\n 'Bookings' ? (\r\n \r\n Booked Date\r\n \r\n ) : null}\r\n \r\n ETD\r\n \r\n \r\n ETA\r\n \r\n \r\n ATA\r\n \r\n \r\n ATD\r\n \r\n \r\n Available\r\n \r\n \r\n Estimated Delivery\r\n \r\n \r\n Delivery Completed\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\r\n )\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.handleChangeValue(\r\n e,\r\n 'toDate'\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.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'QUICK SEARCH'}\r\n \r\n \r\n \r\n \r\n RESET SEARCH\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {this.renderShipmentsTable(\r\n shipmentList\r\n )}\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { clientId, key } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=deliveries',\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n // happy days\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0].id\r\n )\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0].id)\r\n })\r\n }\r\n localforage.setItem(key + '.clients', data)\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const { key } = this.state\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n dateFiltering: data.dateFilterTypeArray\r\n })\r\n localforage.setItem(key + '.organization', data)\r\n }\r\n\r\n getQueryString = (useQuickSearch = true) => {\r\n const {\r\n clientId,\r\n referenceType,\r\n fromDate,\r\n toDate,\r\n mode,\r\n itemReference,\r\n originUNLOCOCodeObject,\r\n originCountryCodeObject,\r\n originName,\r\n destinationUNLOCOCodeObject,\r\n destinationCountryCodeObject,\r\n destinationName,\r\n dateView,\r\n searchItem,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['SearchItem'] = searchItem\r\n qs['referenceType'] = referenceType\r\n qs['Mode'] = mode\r\n qs['UseQuickSearch'] = true\r\n\r\n if (itemReference !== null && itemReference.length > 1) {\r\n qs['ShipmentSearchNumber'] = itemReference\r\n }\r\n\r\n if (originUNLOCOCodeObject !== null) {\r\n qs['Origin'] = originUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (originCountryCodeObject !== null) {\r\n qs['OriginCountryName'] = originCountryCodeObject.countryName\r\n }\r\n\r\n if (originName !== null) {\r\n qs['OriginName'] = originName\r\n }\r\n\r\n if (destinationUNLOCOCodeObject !== null) {\r\n qs['Destination'] = destinationUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (destinationCountryCodeObject !== null) {\r\n qs['DestinationCountryName'] =\r\n destinationCountryCodeObject.countryName\r\n }\r\n\r\n if (destinationName !== null) {\r\n qs['DestinationName'] = destinationName\r\n }\r\n\r\n qs['DateType'] = dateView\r\n\r\n if (fromDate && selectedDate !== 10){\r\n qs['FromDate'] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10){\r\n qs['ToDate'] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async toggleShipmentFlagged(rowData) {\r\n const token = await authService.getAccessToken()\r\n const rawResponse = await fetch('api/shipments/FlagShipment', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: this.state.clientId,\r\n FlaggedValue: rowData.shipmentFlagged ? false : true,\r\n ShipmentNumber: rowData.shipmentNumber\r\n })\r\n })\r\n\r\n if (rawResponse.ok) {\r\n // indicate success to user\r\n this.populateTableData()\r\n } else {\r\n var responseText = await rawResponse.text()\r\n console.log(responseText)\r\n if (rawResponse.status === 403) {\r\n // feature not enabled\r\n alert(responseText)\r\n } else {\r\n alert('Failed to flag shipment, please contact support.')\r\n }\r\n }\r\n }\r\n\r\n async populateTableData(useQuickSearch = true) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n const { clientId, key } = this.state\r\n this.setState({ searching: true })\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n console.info(useQuickSearch)\r\n const response = await fetch(\r\n `api/shipments/GetDeliveries?` +\r\n this.getQueryString(useQuickSearch),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n this.setState({\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title\r\n })\r\n\r\n localforage.setItem(key + '.shipmentList', data.deliveries)\r\n localforage.setItem(key + '.items', data.deliveries)\r\n localStorage.setItem(\r\n key + '.resultsBox1Value',\r\n data.resultsBox1Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox1Title',\r\n data.resultsBox1Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Value',\r\n data.resultsBox2Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Title',\r\n data.resultsBox2Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Value',\r\n data.resultsBox3Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Title',\r\n data.resultsBox3Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Value',\r\n data.resultsBox4Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Title',\r\n data.resultsBox4Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Value',\r\n data.resultsBox5Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Title',\r\n data.resultsBox5Title\r\n )\r\n\r\n this.setState({\r\n items: data.deliveries,\r\n shipmentList: data.deliveries,\r\n loading: false\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(DeliveryTable)\r\n","import React, { useState, useEffect } from 'react'\r\nimport DeliveryTable from './DeliveryTable'\r\nimport { canSearchShipment } from '../utils/permissions'\r\nimport { getAppInfo } from '../api/api'\r\n\r\nexport default function Delivery() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [showSearchShipment, setShowSearchShipment] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo(\r\n null,\r\n async data => {\r\n setIsLoading(false)\r\n setShowSearchShipment(await canSearchShipment(data))\r\n },\r\n () => {\r\n setIsLoading(false)\r\n }\r\n )\r\n }, [])\r\n\r\n return (\r\n
\r\n {loading ? (\r\n 'Loading...'\r\n ) : showSearchShipment ? (\r\n \r\n ) : (\r\n 'Sorry, current access to this page is unavailable.'\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { TextField, Tooltip, LinearProgress } from '@material-ui/core'\r\nimport { FormControl, InputLabel, FormHelperText } from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { renderMap } from '../components/shared/MapHelper'\r\nimport { getIconForShipment } from '../components/shared/MapHelper'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { CardContent } from '@material-ui/core'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport MaterialTable from 'material-table'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { Paper } from '@material-ui/core'\r\nimport Icon from '@material-ui/core/Icon'\r\nimport FlagIcon from '@material-ui/icons/Flag'\r\nimport localforage from 'localforage'\r\nimport { sortData } from '../utils/sorting'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText,\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst mapContainerStyle = {\r\n height: '100%',\r\n width: '100%'\r\n}\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass PickupTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.tableRef = React.createRef()\r\n this.state = {\r\n items: [],\r\n shipmentList: [],\r\n clients: [],\r\n clientId: null,\r\n organization: null,\r\n selectedDate: 2,\r\n toDate: dateFns.moment().weekday(6),\r\n fromDate: dateFns.moment().weekday(0),\r\n minDate: dateFns.moment().weekday(0),\r\n todayDate: new Date(),\r\n loading: true,\r\n error: false,\r\n rowsPerPage: 50,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'shipmentNumber',\r\n resultsBox1Value: 0,\r\n resultsBox1Title: 'Total Container',\r\n resultsBox2Value: 0,\r\n resultsBox2Title: 'Arrived',\r\n resultsBox3Value: 0,\r\n resultsBox3Title: 'Available',\r\n resultsBox4Value: 0,\r\n resultsBox4Title: 'Delivered',\r\n resultsBox5Value: 0,\r\n resultsBox5Title: null,\r\n lastCompletedMilestone: 'ALL',\r\n referenceType: 'SHIPMENT ID',\r\n dateView: 'ALL',\r\n itemReference: null,\r\n mode: 'ALL',\r\n theme: props.theme,\r\n searchItem: props.searchItem || 'Pickup Management',\r\n titleIcon: props.titleIcon || 'assignment_turned_in',\r\n key: props.itemKey || 'shipment',\r\n originUNLOCOCodeObject: null,\r\n originName: null,\r\n originCountryCodeObject: null,\r\n destinationUNLOCOCodeObject: null,\r\n destinationName: null,\r\n destinationCountryCodeObject: null,\r\n originUnlocoCodes: [],\r\n originCountryCodes: [],\r\n destinationUnlocoCodes: [],\r\n destinationCountryCodes: [],\r\n downloadCSVDisabled: false,\r\n displayAdvancedSearchProperties: false,\r\n searching: false,\r\n shipmentFilters: [],\r\n orgHeaderColumns: [],\r\n currentSummaryTile: 1,\r\n dateFiltering: [],\r\n selectedDateHelperText: ''\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ loading: true })\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForage('organization')\r\n await this.loadAndSetFromLocalForage('clients')\r\n } else {\r\n await this.populateConfig()\r\n await this.populateClientsData()\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('clientId')\r\n await this.initSearch()\r\n this.setState({ loading: false })\r\n }\r\n\r\n async initSearch() {\r\n // only load search from cache if navigating back from detail page\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForageNoKey('shipmentFilters')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Title')\r\n await this.loadAndSetFromLocalForage('shipmentList')\r\n await this.loadAndSetFromLocalForage('items')\r\n await this.loadAndSetFromLocalStorage('currentSummaryTile')\r\n // reset 'referred' value in local storage\r\n localStorage.setItem(\r\n 'referredFromDetailPage',\r\n JSON.stringify(false)\r\n )\r\n } else {\r\n // clear shipmentfilters?\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('itemReference')\r\n await this.loadAndSetFromLocalStorage('mode')\r\n await this.loadAndSetFromLocalStorage('referenceType')\r\n await this.loadAndSetFromLocalStorage('dateView')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate')\r\n await this.loadAndSetFromLocalStorage('toDate')\r\n\r\n const { selectedDate } = this.state\r\n this.setDatesFromDateDropdown(selectedDate)\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, jsonParse = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n const value = jsonParse\r\n ? await JSON.parse(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForage(keyName) {\r\n const { key } = this.state\r\n const localForageKey = `${key}.${keyName}`\r\n const value = await localforage.getItem(localForageKey)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForageNoKey(keyName) {\r\n const value = await localforage.getItem(keyName)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n saveShipmentFilterValuesToState = tableRef => {\r\n const newColumnFilters = tableRef.current.state.columns.map(column => ({\r\n field: column.field,\r\n filterValue: column.tableData.filterValue\r\n }))\r\n localforage.setItem('shipmentFilters', newColumnFilters)\r\n this.setState({ shipmentFilters: newColumnFilters })\r\n }\r\n\r\n getURLForItem = itemvalue => {\r\n const { clientId, key } = this.state\r\n\r\n var initialPath = `${ApplicationPaths.Shipments}`\r\n if (key === 'customs') {\r\n initialPath = `${ApplicationPaths.Customs}`\r\n } else if (key === 'booking') {\r\n initialPath = `${ApplicationPaths.Bookings}`\r\n }\r\n\r\n return {\r\n pathname: initialPath + '/' + clientId + '/' + itemvalue\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n this.populateTableData(event)\r\n }\r\n\r\n handleClearAll = async event => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (key.indexOf(`${this.state.key}.`) !== -1) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n\r\n localStorage.removeItem('referredFromDetailPage')\r\n\r\n var lfKeys = []\r\n\r\n await localforage\r\n .keys()\r\n .then(function (keys) {\r\n lfKeys = keys\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n\r\n for (let lfKey of lfKeys) {\r\n if (lfKey.indexOf(this.state.key + '.') !== -1) {\r\n await localforage\r\n .removeItem(lfKey)\r\n .then(function () {\r\n // nothing\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n }\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: // All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: // Custom\r\n from = dateFns.moment(fromDate)\r\n to = dateFns.moment(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: value,\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const { key } = this.state\r\n\r\n const customIndex = 10\r\n\r\n switch (elem) {\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'reference-type':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.referenceType', value)\r\n this.setState({\r\n referenceType: value\r\n })\r\n break\r\n\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'mode':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.mode', value)\r\n this.setState({\r\n mode: value\r\n })\r\n break\r\n\r\n case 'reference':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.itemReference', value)\r\n this.setState({\r\n itemReference: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n getDateObject = (time, substract = false) => {\r\n var moment = require('moment')\r\n const format = 'YYYY-MM-DD HH:mm:ss'\r\n var base = substract ? moment().substract(1, 'month') : moment()\r\n return {\r\n From: base.startOf(time).format(format),\r\n To: base.endOf(time).format(format)\r\n }\r\n }\r\n\r\n getDates = () => {\r\n const { selectedDate } = this.state\r\n\r\n if (selectedDate === 0) {\r\n return this.getDateObject('day')\r\n } else if (selectedDate === 1) {\r\n return this.getDateObject('week')\r\n } else if (selectedDate === 2) {\r\n return this.getDateObject('month')\r\n } else if (selectedDate === 3) {\r\n return this.getDateObject('month', true)\r\n } else if (selectedDate === 4) {\r\n return this.getDateObject('year')\r\n }\r\n\r\n return this.getDateObject('day')\r\n }\r\n\r\n renderToolTipOrderRef = orderRefValue => {\r\n var orderRef = ''\r\n var array = []\r\n if (orderRefValue != null) {\r\n array = orderRefValue.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderNavLinkOrderRef = (clientId, shipmentData) => {\r\n var orderRefs = shipmentData.orderReferenceNumber\r\n if (orderRefs != null) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (shipmentData.orders) {\r\n var order = shipmentData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return (\r\n
\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n key={index}\r\n to={\r\n '/orders/' +\r\n clientId +\r\n '/' +\r\n btoa(refnum.trim()).replace(\r\n '/',\r\n '_'\r\n ) +\r\n '/' +\r\n order.orderNumberSplit\r\n }\r\n >\r\n {refnum}\r\n \r\n
\r\n )\r\n } else {\r\n return
{refnum}
\r\n }\r\n } else {\r\n return
{refnum}
\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>-\r\n }\r\n }\r\n\r\n renderShipmentsTable = items => {\r\n const {\r\n organization,\r\n key,\r\n searchItem,\r\n clientId,\r\n clients,\r\n shipmentFilters,\r\n orgHeaderColumns\r\n } = this.state\r\n const currentClient = clients.find(e => e.id === clientId)\r\n\r\n let cachedHeaderKeyValue = ''\r\n cachedHeaderKeyValue =\r\n currentClient.pickupTableConfigurationArray.length !== 0\r\n ? 'columnHeaders'.concat('_', clientId)\r\n : 'columnHeaders'\r\n\r\n // Have to map new property as column header doesn't match field value\r\n const mappedItems = items.map(item => ({\r\n ...item,\r\n transportMode: item.mode ? item.mode : item.transportMode\r\n }))\r\n\r\n // Map headCells to match required properties for material-table\r\n function getHeaderColumns() {\r\n const columnHeaders =\r\n organization !== null && orgHeaderColumns !== null\r\n ? orgHeaderColumns\r\n .filter(item => item.visible)\r\n .map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: false,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n removable: true,\r\n hiddenByColumnsButton: true\r\n }\r\n })\r\n : []\r\n return columnHeaders\r\n }\r\n\r\n // Checking if key exists in local storage\r\n if (localStorage.getItem(cachedHeaderKeyValue) === null) {\r\n // If key doesn't exists then store the actual column order in local storage\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(getHeaderColumns())\r\n )\r\n } else {\r\n // Add/remove if updated in db\r\n let dbColumns = getHeaderColumns()\r\n let storeColumns = JSON.parse(\r\n localStorage.getItem(cachedHeaderKeyValue)\r\n )\r\n\r\n var i = storeColumns.length\r\n while (i--) {\r\n var dbCol = dbColumns.find(\r\n column => column.field === storeColumns[i].field\r\n )\r\n if (dbCol === undefined) {\r\n // remove column from local storage\r\n storeColumns.splice(i, 1)\r\n } else {\r\n // enforce column metadata from database\r\n storeColumns[i].title = dbCol.title\r\n storeColumns[i].type = dbCol.type\r\n storeColumns[i].sortField = dbCol.sortField\r\n }\r\n }\r\n var i = dbColumns.length\r\n while (i--) {\r\n if (\r\n storeColumns.find(\r\n column => column.field === dbColumns[i].field\r\n ) === undefined\r\n ) {\r\n // add column to local storage\r\n storeColumns.splice(i, 0, dbColumns[i])\r\n }\r\n }\r\n\r\n // update local\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(storeColumns)\r\n )\r\n }\r\n\r\n // Retrieve column data from localstorage\r\n let savedColumns = JSON.parse(\r\n localStorage.getItem(cachedHeaderKeyValue)\r\n )\r\n\r\n // Need to add the render function as can't store this in localstorage\r\n var columnHeaders = savedColumns.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n customSort: (a, b) => sortData(column, a, b),\r\n hidden: column.hidden,\r\n removable: column.removable,\r\n hiddenByColumnsButton: column.hiddenByColumnsButton,\r\n defaultFilter: getFilter(column.field),\r\n render: params => {\r\n if (column.field === 'transportMode') {\r\n return getIconForShipment(params)\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n {\r\n this.saveShipmentFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(params.shipmentNumber)}\r\n >\r\n {params.shipmentNumber}\r\n \r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderNavLinkOrderRef(clientId, params)\r\n } else if (column.field === 'orderRef') {\r\n return this.renderToolTipOrderRef(params.orderRef)\r\n } else if (\r\n organization.containerTrackingURL !== null &&\r\n column.field === 'containerNumber' &&\r\n params.containerNumber !== '' &&\r\n params.containerNumber !== null\r\n ) {\r\n return params.containerNumber.split(',').map(c => {\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n c\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n {c}\r\n \r\n )\r\n })\r\n } else if (column.field === 'shipmentFlagged') {\r\n return params.shipmentFlagged ? 'YES' : null\r\n } else {\r\n return params[column.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n function handleColumnDrag(sourceIndex, destinationIndex) {\r\n // take copy of source column\r\n const sourceColumn = savedColumns[sourceIndex]\r\n // remove source column\r\n savedColumns.splice(sourceIndex, 1)\r\n // insert at destination\r\n savedColumns.splice(destinationIndex, 0, sourceColumn)\r\n // update local storage\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n }\r\n\r\n function handleChangeColumnHidden(column, hidden) {\r\n // Update hidden flag\r\n for (let i = 0; i < savedColumns.length; i++) {\r\n if (savedColumns[i].field === column.field) {\r\n // Set column hidden\r\n savedColumns[i].hidden = hidden\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n break\r\n }\r\n }\r\n }\r\n\r\n function getFilter(field) {\r\n const columnData = shipmentFilters.find(col => col.field === field)\r\n if (columnData) {\r\n return columnData.filterValue\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n (\r\n \r\n ))\r\n }}\r\n actions={[\r\n {\r\n icon: () => {\r\n return \r\n },\r\n tooltip: 'Toggle Shipment Flagged',\r\n onClick: (event, rowData) => {\r\n this.toggleShipmentFlagged(rowData)\r\n }\r\n }\r\n ]}\r\n options={{\r\n filtering: true,\r\n maxBodyHeight: 'calc(100vh - 348px)',\r\n pageSizeOptions: [25, 50, 75],\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n columnsButton: false,\r\n doubleHorizontalScroll: true,\r\n draggable: true,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n // check if 'hot order'\r\n backgroundColor: rowData.shipmentFlagged\r\n ? '#F8AFA7'\r\n : null\r\n }),\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n this.state.organization,\r\n searchItem + 'Export_' + Date.now()\r\n )\r\n }}\r\n onColumnDragged={handleColumnDrag}\r\n onChangeColumnHidden={handleChangeColumnHidden}\r\n />\r\n )\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n key,\r\n currentSummaryTile\r\n } = this.state\r\n\r\n const handleSummaryTileClick = (tileName, tileId) => {\r\n // these may have changed\r\n this.saveShipmentFilterValuesToState(this.tableRef)\r\n var newShipmentList = this.state.items.filter(\r\n i => i.status !== null && i.status.includes(tileName)\r\n )\r\n this.setState({\r\n shipmentList: newShipmentList,\r\n currentSummaryTile: tileId\r\n })\r\n localforage.setItem(key + '.shipmentList', newShipmentList)\r\n localforage.setItem(key + '.currentSummaryTile', tileId)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n shipmentList: this.state.items,\r\n currentSummaryTile: 1\r\n })\r\n localforage.setItem(\r\n key + '.shipmentList',\r\n this.state.items\r\n )\r\n localforage.setItem(\r\n key + '.currentSummaryTile',\r\n 1\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox2Title,\r\n 2\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox3Title,\r\n 3\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox4Title,\r\n 4\r\n )\r\n }}\r\n />\r\n \r\n {resultsBox5Title !== null ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox5Title,\r\n 5\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n\r\n const {\r\n clients,\r\n clientId,\r\n selectedDate,\r\n fromDate,\r\n toDate,\r\n minDate,\r\n todayDate,\r\n referenceType,\r\n dateView,\r\n itemReference,\r\n mode,\r\n organization,\r\n titleIcon,\r\n dateFiltering,\r\n shipmentList,\r\n selectedDateHelperText\r\n } = this.state\r\n\r\n const currentClient = clients.find(e => e.id === clientId)\r\n\r\n const primarycolor =\r\n organization !== null && organization.colorThemePrimaryRGB !== null\r\n ? `${organization.colorThemePrimaryRGB}`\r\n : '#ffffff'\r\n const secodarycolor =\r\n organization !== null &&\r\n organization.colorThemeSecondaryRGB !== null\r\n ? `${organization.colorThemeSecondaryRGB}`\r\n : '#000000'\r\n const teritorycolor =\r\n organization !== null && organization.colorThemeTertiaryRGB !== null\r\n ? `${organization.colorThemeTertiaryRGB}`\r\n : '#ffffff'\r\n const themeRGB =\r\n organization !== null && organization.colorThemeRGB !== null\r\n ? `${organization.colorThemeRGB}`\r\n : '#000000'\r\n const themeTextColor =\r\n organization !== null && organization.colorThemeTextRGB !== null\r\n ? `${organization.colorThemeTextRGB}`\r\n : '#000000'\r\n\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n

\r\n {this.state.searchItem + ' Search'}\r\n

\r\n {titleIcon}\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an error while\r\n retrieving items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMap(shipmentList)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n c.id ===\r\n clientId\r\n ) === -1\r\n ? clients[0].id\r\n : clientId\r\n : clients[0].id\r\n }\r\n onChange={e =>\r\n this.handleChangeValue(\r\n e,\r\n 'client'\r\n )\r\n }\r\n >\r\n {clients.map(function (\r\n client,\r\n i\r\n ) {\r\n return (\r\n \r\n {client.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Mode\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'mode'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Air\r\n \r\n \r\n Sea\r\n \r\n \r\n Road\r\n \r\n \r\n COU\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Search Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference-type'\r\n )\r\n }\r\n >\r\n {this.state.searchItem ===\r\n 'Bookings' ? (\r\n \r\n Booking #\r\n \r\n ) : (\r\n \r\n Shipment #\r\n \r\n )}\r\n \r\n House Bill\r\n \r\n \r\n Master Bill\r\n \r\n \r\n Linked Order Refs\r\n \r\n \r\n Order Refs\r\n \r\n \r\n Owner Refs\r\n \r\n \r\n Shipper's Ref\r\n \r\n \r\n Container #\r\n \r\n \r\n Vessel\r\n \r\n \r\n Supplier Id\r\n \r\n \r\n Carrier Id\r\n \r\n {currentClient.clientView ===\r\n 'CLARK' ? (\r\n \r\n Origin Country Code\r\n \r\n ) : null}\r\n \r\n Pickup Warehouse Id\r\n \r\n \r\n All\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Reference # (3 chars min)\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n {this.state\r\n .searchItem ===\r\n 'Bookings' ? (\r\n \r\n Booked Date\r\n \r\n ) : null}\r\n \r\n ETD\r\n \r\n \r\n ETA\r\n \r\n \r\n ATA\r\n \r\n \r\n ATD\r\n \r\n \r\n Available\r\n \r\n \r\n Estimated Pickup\r\n \r\n \r\n Pickup Completed\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\r\n )\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.handleChangeValue(\r\n e,\r\n 'toDate'\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.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'QUICK SEARCH'}\r\n \r\n \r\n \r\n \r\n RESET SEARCH\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {this.renderShipmentsTable(\r\n shipmentList\r\n )}\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { clientId, key } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=pickups',\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n // happy days\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0].id\r\n )\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0].id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0].id)\r\n })\r\n }\r\n localforage.setItem(key + '.clients', data)\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const { key } = this.state\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n dateFiltering: data.dateFilterTypeArray\r\n })\r\n localforage.setItem(key + '.organization', data)\r\n }\r\n\r\n getQueryString = (useQuickSearch = true) => {\r\n const {\r\n clientId,\r\n referenceType,\r\n fromDate,\r\n toDate,\r\n mode,\r\n itemReference,\r\n originUNLOCOCodeObject,\r\n originCountryCodeObject,\r\n originName,\r\n destinationUNLOCOCodeObject,\r\n destinationCountryCodeObject,\r\n destinationName,\r\n dateView,\r\n searchItem,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['SearchItem'] = searchItem\r\n qs['referenceType'] = referenceType\r\n qs['Mode'] = mode\r\n qs['UseQuickSearch'] = true\r\n\r\n if (itemReference !== null && itemReference.length > 1) {\r\n qs['ShipmentSearchNumber'] = itemReference\r\n }\r\n\r\n if (originUNLOCOCodeObject !== null) {\r\n qs['Origin'] = originUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (originCountryCodeObject !== null) {\r\n qs['OriginCountryName'] = originCountryCodeObject.countryName\r\n }\r\n\r\n if (originName !== null) {\r\n qs['OriginName'] = originName\r\n }\r\n\r\n if (destinationUNLOCOCodeObject !== null) {\r\n qs['Destination'] = destinationUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (destinationCountryCodeObject !== null) {\r\n qs['DestinationCountryName'] =\r\n destinationCountryCodeObject.countryName\r\n }\r\n\r\n if (destinationName !== null) {\r\n qs['DestinationName'] = destinationName\r\n }\r\n\r\n qs['DateType'] = dateView\r\n\r\n if (fromDate && selectedDate !== 10){\r\n qs['FromDate'] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10){\r\n qs['ToDate'] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async toggleShipmentFlagged(rowData) {\r\n const token = await authService.getAccessToken()\r\n const rawResponse = await fetch('api/shipments/FlagShipment', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n ClientId: this.state.clientId,\r\n FlaggedValue: rowData.shipmentFlagged ? false : true,\r\n ShipmentNumber: rowData.shipmentNumber\r\n })\r\n })\r\n\r\n if (rawResponse.ok) {\r\n // indicate success to user\r\n this.populateTableData()\r\n } else {\r\n var responseText = await rawResponse.text()\r\n console.log(responseText)\r\n if (rawResponse.status === 403) {\r\n // feature not enabled\r\n alert(responseText)\r\n } else {\r\n alert('Failed to flag shipment, please contact support.')\r\n }\r\n }\r\n }\r\n\r\n async populateTableData(useQuickSearch = true) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n const { clientId, key } = this.state\r\n this.setState({ searching: true })\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/shipments/GetPickup?` +\r\n this.getQueryString(useQuickSearch),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n this.setState({\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title\r\n })\r\n\r\n localforage.setItem(key + '.shipmentList', data.pickups)\r\n localforage.setItem(key + '.items', data.pickups)\r\n localStorage.setItem(\r\n key + '.resultsBox1Value',\r\n data.resultsBox1Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox1Title',\r\n data.resultsBox1Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Value',\r\n data.resultsBox2Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Title',\r\n data.resultsBox2Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Value',\r\n data.resultsBox3Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Title',\r\n data.resultsBox3Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Value',\r\n data.resultsBox4Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Title',\r\n data.resultsBox4Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Value',\r\n data.resultsBox5Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Title',\r\n data.resultsBox5Title\r\n )\r\n\r\n this.setState({\r\n items: data.pickups,\r\n shipmentList: data.pickups,\r\n loading: false\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(PickupTable)\r\n","import React, { useState, useEffect } from 'react'\r\nimport PickupTable from './PickupTable'\r\nimport { canSearchShipment } from '../utils/permissions'\r\nimport { getAppInfo } from '../api/api'\r\n\r\nexport default function Pickup() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [showSearchShipment, setShowSearchShipment] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo(\r\n null,\r\n async data => {\r\n setIsLoading(false)\r\n setShowSearchShipment(await canSearchShipment(data))\r\n },\r\n () => {\r\n setIsLoading(false)\r\n }\r\n )\r\n }, [])\r\n\r\n return (\r\n
\r\n {loading ? (\r\n 'Loading...'\r\n ) : showSearchShipment ? (\r\n \r\n ) : (\r\n 'Sorry, current access to this page is unavailable.'\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Card from '@material-ui/core/Card';\r\nimport authService from './api-authorization/AuthorizeService';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport '../custom.css';\r\n\r\nimport { PowerBIEmbed } from 'powerbi-client-react';\r\nimport { models } from 'powerbi-client';\r\nimport * as pbi from 'powerbi-client';\r\nimport {\r\n MenuItem,\r\n Select,\r\n FormControl,\r\n IconButton,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275\r\n }\r\n});\r\n\r\ninterface ReportData {\r\n reportId: string;\r\n reportName: string;\r\n groupId: string;\r\n}\r\n\r\nexport default function Report() {\r\n const classes = useStyles();\r\n const [reportsList, setReportList] = useState([]);\r\n const [selectedIndex, setIndexValue] = useState(0);\r\n const [reportId, setReportId] = useState('');\r\n const [datasetId, setDatasetId] = useState('');\r\n const [embedUrl, setEmbedUrl] = useState('');\r\n const [accessToken, setAccessToken] = useState('');\r\n const [colorThemeRGB, setColorThemeRGB] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [reportName, setReportName] = useState('');\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n const [report, setReport] = useState();\r\n\r\n useEffect(() => {\r\n getAppInfo();\r\n populateReportsData();\r\n }, []);\r\n\r\n const getAppInfo = async () => {\r\n setIsLoading(true);\r\n const token = await authService.getAccessToken();\r\n const response = await fetch('api/app/info', {\r\n headers: token ? { Authorization: `Bearer ${token}` } : {}\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n setColorThemeRGB(data.colorThemeRGB);\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n const downloadReport = async (reportId: string, reportName: string, currentPage: boolean) => {\r\n setIsDownloading(true);\r\n const token = await authService.getAccessToken();\r\n let reportPageParam = '';\r\n\r\n if (currentPage) {\r\n if (!report) {\r\n setIsDownloading(false);\r\n return;\r\n }\r\n const activePage = await getActivePage(report);\r\n if (!activePage) {\r\n setIsDownloading(false);\r\n return;\r\n }\r\n\r\n reportPageParam = '&pageName=' + activePage.name;\r\n }\r\n\r\n const response = await fetch(\r\n `api/bireport/DownloadReport?reportId=${reportId}&datasetId=${datasetId}` + reportPageParam,\r\n { headers: token ? { Authorization: `Bearer ${token}` } : {} }\r\n );\r\n\r\n if (response.ok) {\r\n const data = await response.blob();\r\n const filename = `${reportName}.pdf`;\r\n const url = window.URL.createObjectURL(new Blob([data]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n }\r\n setIsDownloading(false);\r\n };\r\n\r\n const populateReportsData = async () => {\r\n setIsLoading(true);\r\n const user = await authService.getUser();\r\n const userId = user ? user.sub : null;\r\n const token = await authService.getAccessToken();\r\n const response = await fetch(`api/users/GetUserBIReports/${userId}`, {\r\n headers: token ? { Authorization: `Bearer ${token}` } : {}\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n setReportList(data);\r\n if (data.length > 0) {\r\n await populateReportData(data[selectedIndex].groupId, data[selectedIndex].reportId);\r\n }\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n const handleReportChange = async (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setIsLoading(true);\r\n const selectedReportId = event.target.value as string;\r\n const report = reportsList.find(report => report.reportId === selectedReportId);\r\n if (report) {\r\n setIndexValue(reportsList.indexOf(report));\r\n await populateReportData(report.groupId, report.reportId);\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n // new function to get active page from report\r\n const getActivePage = async (report: pbi.Report) => {\r\n const pages = await report.getPages();\r\n const activePage = pages.find(page => page.isActive);\r\n return activePage;\r\n };\r\n \r\n const populateReportData = async (groupId: string, reportId: string) => {\r\n setIsLoading(true);\r\n const token = await authService.getAccessToken();\r\n const user = await authService.getUser();\r\n const userId = user ? user.sub : null;\r\n\r\n const response = await fetch('api/bireport/GetReportDetails', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({ Id: reportId, GroupId: groupId, UserId: userId })\r\n });\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n setReportId(data.reportId);\r\n setDatasetId(data.datasetId);\r\n setReportName(data.reportName);\r\n setEmbedUrl(data.embedUrl);\r\n setAccessToken(data.token);\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Select Report\r\n \r\n \r\n \r\n
\r\n downloadReport(reportId, reportName, false)}\r\n >\r\n \r\n Export Full Report\r\n \r\n downloadReport(reportId, reportName, true)}\r\n >\r\n \r\n Export Current Page\r\n \r\n
\r\n {isDownloading && }\r\n
\r\n \r\n console.log('Report loaded')]\r\n ])}\r\n getEmbeddedComponent = { (embedObject: pbi.Embed) => {\r\n setReport(embedObject as pbi.Report);\r\n } }\r\n />\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import '../custom.css'\r\nimport React, { PureComponent } from 'react'\r\n\r\nimport { PowerBIEmbed } from 'powerbi-client-react'\r\nimport { models } from 'powerbi-client'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\n\r\nclass ReportDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n let reportId = props.match.params.reportId\r\n let groupId = props.match.params.groupId\r\n if (\r\n reportId == 'null' ||\r\n reportId == undefined ||\r\n reportId == '' ||\r\n groupId == 'null' ||\r\n groupId == undefined ||\r\n groupId == ''\r\n ) {\r\n this.goBack()\r\n }\r\n this.state = {\r\n reportData: {},\r\n embedUrl: '',\r\n accessToken: '',\r\n reportId: props.match.params.reportId,\r\n groupId: props.match.params.groupId\r\n }\r\n }\r\n\r\n goBack = () => {\r\n this.props.history.goBack()\r\n }\r\n\r\n componentDidMount() {\r\n this.populateReportData()\r\n }\r\n\r\n async populateReportData() {\r\n const token = await authService.getAccessToken()\r\n const { reportId, groupId } = this.state\r\n\r\n const user = await authService.getUser()\r\n let userId = ''\r\n if (user) {\r\n userId = user.sub\r\n } else {\r\n userId = null\r\n }\r\n\r\n let data = {\r\n Id: reportId,\r\n GroupId: groupId,\r\n UserId: userId\r\n }\r\n await fetch('api/bireport/GetReportDetails', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json()\r\n }\r\n })\r\n\r\n .then(d => {\r\n //const data = d.json()\r\n this.setState({\r\n reportData: d\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n reportData: {\r\n embedUrl: '',\r\n token: '',\r\n reportId: '',\r\n reportName: ''\r\n }\r\n })\r\n })\r\n }\r\n\r\n render() {\r\n const { reportData, embedUrl, accessToken, reportId } = this.state\r\n return (\r\n
\r\n

{reportData.reportName}

\r\n\r\n {\r\n window.report = embeddedReport\r\n }}\r\n />\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ReportDetails)\r\n","import '../custom.css'\r\nimport React, { PureComponent } from 'react'\r\n\r\nimport authService from './api-authorization/AuthorizeService'\r\n\r\nimport { PowerBIEmbed } from 'powerbi-client-react'\r\nimport { models } from 'powerbi-client'\r\nimport MUIDataTable from 'mui-datatables'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\n\r\nclass DashboardsMore extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n items: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.populateDashboardsData()\r\n }\r\n\r\n async populateDashboardsData() {\r\n const user = await authService.getUser()\r\n let userId = ''\r\n if (user) {\r\n userId = user.sub\r\n } else {\r\n userId = null\r\n }\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/users/GetUserBIDashboards/' + userId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({\r\n items: data\r\n })\r\n }\r\n }\r\n\r\n populateDataToDisplay() {\r\n const { items } = this.state\r\n if (items) {\r\n var DashboardArray = []\r\n for (let i = 0; i < items.length; i++) {\r\n let dashboardArray = []\r\n dashboardArray.push(items[i].dashboardName)\r\n dashboardArray.push(items[i].dashboardId)\r\n dashboardArray.push(items[i].groupId)\r\n\r\n DashboardArray.push(dashboardArray)\r\n }\r\n return DashboardArray\r\n }\r\n }\r\n render() {\r\n const { classes } = this.props\r\n\r\n const columns = [\r\n {\r\n id: 'dashboardid',\r\n label: 'DashboardId',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n id: 'groupid',\r\n label: 'GroupId',\r\n options: { filter: false, sort: false, display: 'none' }\r\n },\r\n {\r\n name: 'dashboardname',\r\n label: 'Name',\r\n options: {\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n var customerId = tableMeta.rowData[0]\r\n var dashboardid = tableMeta.rowData[1]\r\n var groupid = tableMeta.rowData[2]\r\n var path = 'Dashboard/' + dashboardid + '/' + groupid\r\n return (\r\n \r\n )\r\n }\r\n }\r\n }\r\n ]\r\n\r\n const data = this.populateDataToDisplay()\r\n\r\n const options = {\r\n filter: false,\r\n viewColumns: false,\r\n print: false,\r\n download: false,\r\n selectableRows: 'none',\r\n caseSensitive: false,\r\n pagination: false,\r\n searchOpen: true,\r\n searchIcon: false\r\n }\r\n return (\r\n
\r\n

Dashboards

\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(DashboardsMore)\r\n","import '../custom.css'\r\nimport React, { PureComponent } from 'react'\r\n\r\nimport { PowerBIEmbed } from 'powerbi-client-react'\r\nimport { models } from 'powerbi-client'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n },\r\n link: {\r\n color: 'blue'\r\n }\r\n})\r\n\r\nclass DashboardDetails extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n let dashboardId = props.match.params.dashboardId\r\n let groupId = props.match.params.groupId\r\n if (\r\n dashboardId == 'null' ||\r\n dashboardId == undefined ||\r\n dashboardId == '' ||\r\n groupId == 'null' ||\r\n groupId == undefined ||\r\n groupId == ''\r\n ) {\r\n this.goBack()\r\n }\r\n\r\n this.state = {\r\n dashboardData: {},\r\n embedUrl: '',\r\n accessToken: '',\r\n dashboardId: props.match.params.dashboardId,\r\n groupId: props.match.params.groupId\r\n }\r\n }\r\n\r\n goBack = () => {\r\n this.props.history.goBack()\r\n }\r\n\r\n componentDidMount() {\r\n this.populateDashboardData()\r\n }\r\n\r\n //to get the dashboard(access_token, embed_url) fotr display the dashboard\r\n async populateDashboardData() {\r\n const token = await authService.getAccessToken()\r\n const { dashboardId, groupId } = this.state\r\n\r\n const user = await authService.getUser()\r\n let userId = ''\r\n if (user) {\r\n userId = user.sub\r\n } else {\r\n userId = null\r\n }\r\n\r\n let data = {\r\n Id: dashboardId,\r\n GroupId: groupId,\r\n UserId: userId\r\n }\r\n await fetch('api/bidashboard/GetDashboardDetails', {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json()\r\n }\r\n })\r\n\r\n .then(d => {\r\n //const data = d.json()\r\n this.setState({\r\n dashboardData: d\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({\r\n dashboardData: {\r\n embedUrl: '',\r\n token: '',\r\n dashboardId: '',\r\n dashboardName: ''\r\n }\r\n })\r\n })\r\n }\r\n\r\n render() {\r\n const { dashboardData, embedUrl, accessToken, dashboardId } = this.state\r\n return (\r\n
\r\n

{dashboardData.dashboardName}

\r\n {\r\n window.dashboard = embeddedDashboard\r\n }}\r\n />\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(DashboardDetails)\r\n","import React, { PureComponent, forwardRef } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport authService from './api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from './api-authorization/ApiAuthorizationConstants'\r\nimport { TextField, Tooltip, LinearProgress } from '@material-ui/core'\r\nimport { FormControl, InputLabel, FormHelperText } from '@material-ui/core'\r\nimport { MenuItem, Select, Grid, Button, Link } from '@material-ui/core'\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { renderMap } from '../components/shared/MapHelper'\r\nimport { getIconForShipment } from '../components/shared/MapHelper'\r\nimport DateFnsUtils from '@date-io/moment'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport { KeyboardDatePicker } from '@material-ui/pickers'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport { CardContent } from '@material-ui/core'\r\nimport SummaryInfo from './shared/SummaryInfo'\r\nimport MaterialTable from 'material-table'\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward'\r\nimport { Paper } from '@material-ui/core'\r\nimport localforage from 'localforage'\r\nimport { sortData } from '../utils/sorting'\r\nimport { ThemeProvider, createTheme } from '@mui/material'\r\nimport TableViewManagementDialog from './shared/TableViewManagementDialog'\r\nimport {\r\n retrieveView,\r\n getViewCodeBySearchItem,\r\n getViewNameBySearchItem,\r\n saveViewColumns\r\n} from './shared/Views'\r\nimport TableViewCreateDialog from './shared/TableViewCreateDialog'\r\nimport DialogContainer from './DialogContainer'\r\nimport { getContainerExtraData } from './shared/ShipmentsHelper'\r\nimport { prepareCsvExport } from '../utils/exporting'\r\nimport ClientSelector from '../components/shared/ClientSelector'\r\nimport ScheduledReportsManagementDialog from './shared/ScheduledReportsManagementDialog'\r\nimport ScheduleIcon from '@material-ui/icons/Schedule'\r\n\r\nconst styles = theme => ({\r\n formControl: {\r\n margin: 0,\r\n minWidth: '170px',\r\n fullWidth: true,\r\n display: 'flex',\r\n wrap: 'nowrap'\r\n },\r\n link: {\r\n color: theme.palette.primary.contrastText,\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText\r\n }\r\n})\r\n\r\nconst mapContainerStyle = {\r\n height: '100%',\r\n width: '100%'\r\n}\r\n\r\nconst dateFns = new DateFnsUtils()\r\n\r\nclass ContainerTable extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.tableRef = React.createRef()\r\n this.state = {\r\n items: [],\r\n containerList: [],\r\n clients: [],\r\n clientId: null,\r\n organization: null,\r\n selectedDate: 2, // this month\r\n toDate: dateFns.moment().endOf('month'),\r\n fromDate: dateFns.moment().startOf('month'),\r\n minDate: dateFns.moment().startOf('month'),\r\n todayDate: new Date(),\r\n loading: false,\r\n error: false,\r\n rowsPerPage: 50,\r\n page: 0,\r\n order: 'asc',\r\n orderBy: 'shipmentNumber',\r\n resultsBox1Value: 0,\r\n resultsBox1Title: '',\r\n resultsBox2Value: 0,\r\n resultsBox2Title: '',\r\n resultsBox3Value: 0,\r\n resultsBox3Title: '',\r\n resultsBox4Value: 0,\r\n resultsBox4Title: '',\r\n resultsBox5Value: 0,\r\n resultsBox5Title: '',\r\n lastCompletedMilestone: 'ALL',\r\n referenceType: 'CID',\r\n dateView: 'ALL',\r\n itemReference: null,\r\n mode: 'ALL',\r\n theme: props.theme,\r\n searchItem: props.searchItem || 'Container Management',\r\n titleIcon: props.titleIcon || 'border_all',\r\n key: props.itemKey || 'container',\r\n originUNLOCOCodeObject: null,\r\n originName: null,\r\n originCountryCodeObject: null,\r\n destinationUNLOCOCodeObject: null,\r\n destinationName: null,\r\n destinationCountryCodeObject: null,\r\n originUnlocoCodes: [],\r\n originCountryCodes: [],\r\n destinationUnlocoCodes: [],\r\n destinationCountryCodes: [],\r\n downloadCSVDisabled: false,\r\n displayAdvancedSearchProperties: false,\r\n searching: false,\r\n containerFilters: [],\r\n orgHeaderColumns: [],\r\n containerSearchTypes: [],\r\n userViewId: null,\r\n primaryColor: '#ffffff',\r\n themeTextColor: '#000000',\r\n selectedContainer: null,\r\n selectedShipment: null,\r\n showContainerDialog: false,\r\n currentSummaryTile: 1,\r\n dateFiltering: [],\r\n selectedDateHelperText: '',\r\n showScheduledReports: false,\r\n newReportData: null,\r\n canSeeScheduledReports: false\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.setState({ searching: true })\r\n\r\n await this.populateConfig()\r\n await this.populateClientsData()\r\n }\r\n\r\n async runClientDependentFunctions() {\r\n const referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n this.fetchGridSearchTypes()\r\n this.initSearch()\r\n this.getOrgHeaderColumns()\r\n\r\n if (!referredFromDetailPage) {\r\n // need to do a dummy data load to get the summary tile data\r\n this.populateTableData(true, true)\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n\r\n handleNewScheduledReport = () => {\r\n // first get report data from search params then open dialog\r\n const newReportData = {\r\n module: this.state.searchItem,\r\n key: this.state.key,\r\n clientId: this.state.clientId,\r\n clientName: this.state.clients.find(\r\n c => c.id === this.state.clientId\r\n ).name,\r\n transportMode: this.state.mode,\r\n referenceType: this.state.referenceType,\r\n referenceTypeDescription: this.state.containerSearchTypes.find(\r\n gst => gst.searchType === this.state.referenceType\r\n ).searchTypeDescription,\r\n itemReference: this.state.itemReference,\r\n dateView: this.state.dateView,\r\n selectedDate: this.state.selectedDate,\r\n dateRange: this.state.dateFiltering.find(\r\n df => df.id === this.state.selectedDate\r\n ).label,\r\n fromDate: this.state.fromDate,\r\n toDate: this.state.toDate,\r\n reportQueryString: this.getQueryString(true, false),\r\n relatedModule: 3\r\n }\r\n\r\n this.setState({ newReportData: newReportData }, () => {\r\n this.setState({ showScheduledReports: true })\r\n })\r\n }\r\n\r\n async initSearch() {\r\n // only load search from cache if navigating back from detail page\r\n var referredFromDetailPage = await JSON.parse(\r\n localStorage.getItem('referredFromDetailPage')\r\n )\r\n\r\n if (referredFromDetailPage) {\r\n await this.loadAndSetFromLocalForageNoKey('containerFilters')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox1Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox2Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox3Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox4Title')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Value')\r\n await this.loadAndSetFromLocalStorage('resultsBox5Title')\r\n await this.loadAndSetFromLocalForage('containerList')\r\n await this.loadAndSetFromLocalForage('items')\r\n await this.loadAndSetFromLocalForage('currentSummaryTile')\r\n // reset 'referred' value in local storage\r\n localStorage.setItem(\r\n 'referredFromDetailPage',\r\n JSON.stringify(false)\r\n )\r\n } else {\r\n // clear shipmentfilters?\r\n }\r\n\r\n await this.loadAndSetFromLocalStorage('itemReference')\r\n await this.loadAndSetFromLocalStorage('mode')\r\n await this.loadAndSetFromLocalStorage('referenceType')\r\n await this.loadAndSetFromLocalStorage('dateView')\r\n await this.loadAndSetFromLocalStorage('selectedDate')\r\n await this.loadAndSetFromLocalStorage('fromDate')\r\n await this.loadAndSetFromLocalStorage('toDate')\r\n\r\n // check if referenceType exists in the containerSearchTypes array\r\n const { containerSearchTypes, referenceType } = this.state\r\n const referenceTypeExists = containerSearchTypes.find(\r\n e => e.searchType === referenceType\r\n )\r\n // if it doesn't exist, set the first searchType in the array\r\n if (!referenceTypeExists && containerSearchTypes.length > 0) {\r\n this.setState({ referenceType: containerSearchTypes[0].searchType })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalStorage(keyName, jsonParse = false) {\r\n const { key } = this.state\r\n const localStorageKey = `${key}.${keyName}`\r\n const value = jsonParse\r\n ? await JSON.parse(localStorage.getItem(localStorageKey))\r\n : await localStorage.getItem(localStorageKey)\r\n\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value }, () => {\r\n if (keyName === 'selectedDate') {\r\n this.setDatesFromDateDropdown(value)\r\n }\r\n })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForage(keyName) {\r\n const { key } = this.state\r\n const localForageKey = `${key}.${keyName}`\r\n const value = await localforage.getItem(localForageKey)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n async loadAndSetFromLocalForageNoKey(keyName) {\r\n const value = await localforage.getItem(keyName)\r\n if (value !== null) {\r\n this.setState({ [`${keyName}`]: value })\r\n }\r\n }\r\n\r\n getOrgHeaderColumns = async () => {\r\n const { clientId } = this.state\r\n if (clientId) {\r\n const view = await retrieveView(clientId, 'ContainerSearchGrid')\r\n if (view) {\r\n this.setState({\r\n orgHeaderColumns: view.columnDefinitionsArray,\r\n userViewId: view.id\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleContainerNumberClick = async rowData => {\r\n // first need to get container data\r\n const { clientId } = this.state\r\n this.setState({ searching: true })\r\n\r\n const container = await getContainerExtraData(\r\n rowData,\r\n rowData.containerNumber,\r\n clientId\r\n )\r\n\r\n // add vesselcoordinates to the shipment\r\n let shipmentData = rowData\r\n shipmentData.vesselCoordinates = container.vesselCoordinates\r\n shipmentData.routingInfo = container.routingInfo\r\n shipmentData.geoLocationCurrentLocation =\r\n container.geoLocationCurrentLocation\r\n\r\n // this is a bit messy\r\n container.vesselCoordinates = null\r\n container.routingInfo = null\r\n\r\n if (container) {\r\n this.setState(\r\n {\r\n selectedContainer: container,\r\n selectedShipment: shipmentData\r\n },\r\n () => {\r\n this.setState({ showContainerDialog: true })\r\n }\r\n )\r\n this.setState({ searching: false })\r\n } else {\r\n this.setState({ searching: false })\r\n }\r\n }\r\n\r\n setContainerDialogState = showDialog => {\r\n this.setState({ showContainerDialog: showDialog })\r\n }\r\n\r\n saveContainerFilterValuesToState = tableRef => {\r\n const newColumnFilters = tableRef.current.state.columns.map(column => ({\r\n field: column.field,\r\n filterValue: column.tableData.filterValue\r\n }))\r\n localforage.setItem('containerFilters', newColumnFilters)\r\n this.setState({ containerFilters: newColumnFilters })\r\n }\r\n\r\n getURLForItem = itemvalue => {\r\n const { clientId, key } = this.state\r\n\r\n var initialPath = `${ApplicationPaths.Shipments}`\r\n if (key === 'customs') {\r\n initialPath = `${ApplicationPaths.Customs}`\r\n } else if (key === 'booking') {\r\n initialPath = `${ApplicationPaths.Bookings}`\r\n }\r\n\r\n return {\r\n pathname: initialPath + '/' + clientId + '/' + itemvalue\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n this.saveContainerFilterValuesToState(this.tableRef)\r\n this.populateTableData(event)\r\n }\r\n\r\n handleClearAll = async event => {\r\n for (let [key, value] of Object.entries(localStorage)) {\r\n if (key.indexOf(`${this.state.key}.`) !== -1) {\r\n localStorage.removeItem(key)\r\n }\r\n }\r\n\r\n localStorage.removeItem('referredFromDetailPage')\r\n\r\n var lfKeys = []\r\n\r\n await localforage\r\n .keys()\r\n .then(function (keys) {\r\n lfKeys = keys\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n\r\n for (let lfKey of lfKeys) {\r\n if (lfKey.indexOf(this.state.key + '.') !== -1) {\r\n await localforage\r\n .removeItem(lfKey)\r\n .then(function () {\r\n // nothing\r\n })\r\n .catch(function (err) {\r\n console.log(err)\r\n })\r\n }\r\n }\r\n\r\n window.location.reload()\r\n }\r\n\r\n setDatesFromDateDropdown = value => {\r\n let from = null\r\n let to = null\r\n const { key, fromDate, toDate } = this.state\r\n\r\n this.setState({\r\n selectedDateHelperText: ''\r\n })\r\n\r\n switch (parseInt(value)) {\r\n case 0: // Today\r\n from = dateFns.moment().startOf('day')\r\n to = dateFns.moment().endOf('day')\r\n break\r\n case 1: // This Week\r\n from = dateFns.moment().startOf('week')\r\n to = dateFns.moment().endOf('week')\r\n break\r\n case 2: // This Month\r\n from = dateFns.moment.utc().startOf('month')\r\n to = dateFns.moment.utc().endOf('month')\r\n break\r\n case 3: // This Year\r\n from = dateFns.moment.utc().startOf('year')\r\n to = dateFns.moment.utc().endOf('year')\r\n break\r\n case 4: // Next Week\r\n let nwDate = dateFns.moment.utc(new Date()).add(1, 'week')\r\n from = dateFns.moment(nwDate).startOf('week')\r\n to = dateFns.moment(nwDate).endOf('week')\r\n break\r\n case 5: // Next Month\r\n let nmDate = dateFns.moment.utc(new Date()).add(1, 'month')\r\n from = dateFns.moment(nmDate).startOf('month')\r\n to = dateFns.moment(nmDate).endOf('month')\r\n break\r\n case 6: // Next Year\r\n let nyDate = dateFns.moment.utc(new Date()).add(1, 'year')\r\n from = dateFns.moment(nyDate).startOf('year')\r\n to = dateFns.moment(nyDate).endOf('year')\r\n break\r\n case 7: // Last Week\r\n let lwDate = dateFns.moment.utc(new Date()).subtract(1, 'week')\r\n from = dateFns.moment(lwDate).startOf('week')\r\n to = dateFns.moment(lwDate).endOf('week')\r\n break\r\n case 8: // Last Month\r\n let lmDate = dateFns.moment.utc(new Date()).subtract(1, 'month')\r\n from = dateFns.moment(lmDate).startOf('month')\r\n to = dateFns.moment(lmDate).endOf('month')\r\n break\r\n case 9: // Last Year\r\n let lyDate = dateFns.moment.utc(new Date()).subtract(1, 'year')\r\n from = dateFns.moment(lyDate).startOf('year')\r\n to = dateFns.moment(lyDate).endOf('year')\r\n break\r\n case 10: // All Time\r\n from = fromDate\r\n to = toDate\r\n this.setState({\r\n selectedDateHelperText:\r\n 'All Time search may take a while to load.'\r\n })\r\n break\r\n case 11: // Custom\r\n from = dateFns.moment.utc(fromDate)\r\n to = dateFns.moment.utc(toDate)\r\n break\r\n default:\r\n break\r\n }\r\n\r\n localStorage.setItem(key + '.fromDate', from)\r\n localStorage.setItem(key + '.toDate', to)\r\n\r\n this.setState({\r\n selectedDate: parseInt(value),\r\n fromDate: from,\r\n toDate: to\r\n })\r\n }\r\n\r\n handleClientSelectChange = selectedClientIds => {\r\n localStorage.setItem(this.state.key + '.clientId', selectedClientIds[0])\r\n this.setState({ clientId: selectedClientIds[0] })\r\n }\r\n\r\n handleChangeValue = (event, elem) => {\r\n let value = null\r\n const { key } = this.state\r\n\r\n const customIndex = 11\r\n\r\n switch (elem) {\r\n case 'fromDate':\r\n this.setState({ fromDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.fromDate', event)\r\n break\r\n\r\n case 'toDate':\r\n this.setState({ toDate: event, selectedDate: customIndex })\r\n localStorage.setItem(key + '.selectedDate', customIndex)\r\n localStorage.setItem(key + '.toDate', event)\r\n break\r\n\r\n case 'selectedDate':\r\n value = event.target.value\r\n localStorage.setItem(key + '.selectedDate', value)\r\n this.setDatesFromDateDropdown(value)\r\n break\r\n\r\n case 'dateView':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.dateView', value)\r\n this.setState({\r\n dateView: value\r\n })\r\n break\r\n\r\n case 'reference-type':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.referenceType', value)\r\n this.setState({\r\n referenceType: value\r\n })\r\n break\r\n\r\n case 'client':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.clientId', value)\r\n this.setState({\r\n clientId: value\r\n })\r\n break\r\n\r\n case 'mode':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.mode', value)\r\n this.setState({\r\n mode: value\r\n })\r\n break\r\n\r\n case 'reference':\r\n value = event ? event.target.value : event\r\n localStorage.setItem(key + '.itemReference', value)\r\n this.setState({\r\n itemReference: value\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n getDateObject = (time, substract = false) => {\r\n var moment = require('moment')\r\n const format = 'YYYY-MM-DD HH:mm:ss'\r\n var base = substract ? moment().substract(1, 'month') : moment()\r\n return {\r\n From: base.startOf(time).format(format),\r\n To: base.endOf(time).format(format)\r\n }\r\n }\r\n\r\n getDates = () => {\r\n const { selectedDate } = this.state\r\n\r\n if (selectedDate === 0) {\r\n return this.getDateObject('day')\r\n } else if (selectedDate === 1) {\r\n return this.getDateObject('week')\r\n } else if (selectedDate === 2) {\r\n return this.getDateObject('month')\r\n } else if (selectedDate === 3) {\r\n return this.getDateObject('month', true)\r\n } else if (selectedDate === 4) {\r\n return this.getDateObject('year')\r\n }\r\n\r\n return this.getDateObject('day')\r\n }\r\n\r\n renderToolTipOrderRef = orderRefValue => {\r\n var orderRef = ''\r\n var array = []\r\n if (orderRefValue != null) {\r\n array = orderRefValue.split(',')\r\n if (array.length <= 2) {\r\n orderRef = array.join()\r\n } else {\r\n orderRef = array[0]\r\n }\r\n }\r\n\r\n return (\r\n

\r\n {orderRef}\r\n {array.length > 2 ? (\r\n \r\n

{array.join()}
\r\n \r\n }\r\n placement=\"right\"\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n )\r\n }\r\n\r\n renderNavLinkOrderRef = (clientId, containerData) => {\r\n var orderRefs = containerData.orderReferenceNumber\r\n if (orderRefs != null) {\r\n return (\r\n <>\r\n {orderRefs.split(',').map((refnum, index) => {\r\n if (containerData.orders) {\r\n var order = containerData.orders.find(\r\n order => order.orderNumber === refnum.trim()\r\n )\r\n if (order) {\r\n return (\r\n
\r\n {\r\n this.saveContainerFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n key={index}\r\n to={\r\n '/orders/' +\r\n clientId +\r\n '/' +\r\n btoa(refnum.trim()).replace(\r\n '/',\r\n '_'\r\n ) +\r\n '/' +\r\n order.orderNumberSplit\r\n }\r\n >\r\n {refnum}\r\n \r\n
\r\n )\r\n } else {\r\n return
{refnum}
\r\n }\r\n } else {\r\n return
{refnum}
\r\n }\r\n })}\r\n \r\n )\r\n } else {\r\n return <>-\r\n }\r\n }\r\n\r\n renderContainersTable = items => {\r\n const {\r\n organization,\r\n key,\r\n searchItem,\r\n clientId,\r\n clients,\r\n containerFilters,\r\n orgHeaderColumns,\r\n userViewId,\r\n themeTextColor,\r\n primaryColor,\r\n canSeeScheduledReports\r\n } = this.state\r\n\r\n const currentClient = clients?.find(e => e.id === clientId)\r\n const tableTheme = createTheme()\r\n const tableViewCode = getViewCodeBySearchItem(this.state.searchItem)\r\n const tableViewName = getViewNameBySearchItem(this.state.searchItem)\r\n\r\n let cachedHeaderKeyValue = ''\r\n cachedHeaderKeyValue =\r\n currentClient?.clientView !== 'DEFAULT'\r\n ? 'columnHeaders'.concat('_', currentClient?.clientView)\r\n : 'columnHeaders'\r\n\r\n // Have to map new property as column header doesn't match field value\r\n const mappedItems = items.map(item => ({\r\n ...item,\r\n transportMode: item.mode ? item.mode : item.transportMode\r\n }))\r\n\r\n // Map headCells to match required properties for material-table\r\n function getHeaderColumns() {\r\n const columnHeaders =\r\n organization !== null && orgHeaderColumns !== null\r\n ? orgHeaderColumns.map(headcell => {\r\n return {\r\n field: headcell.value,\r\n title: headcell.title,\r\n type: headcell.type,\r\n sortField: headcell.sortField,\r\n hidden: headcell.visible ? false : true,\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n removable: true,\r\n hiddenByColumnsButton: true,\r\n id: headcell.id,\r\n order: headcell.order,\r\n customTitle: headcell.customTitle,\r\n width: headcell.width\r\n }\r\n })\r\n : []\r\n return columnHeaders\r\n }\r\n\r\n let savedColumns = getHeaderColumns()\r\n\r\n // Need to add the render function as can't store this in localstorage\r\n var columnHeaders = savedColumns.map(column => {\r\n return {\r\n field: column.field,\r\n title: column.title,\r\n type: column.type,\r\n sortField: column.sortField,\r\n customSort: (a, b) => sortData(column, a, b),\r\n hidden: column.hidden,\r\n removable: column.removable,\r\n hiddenByColumnsButton: column.hiddenByColumnsButton,\r\n defaultFilter: getFilter(column.field),\r\n cellStyle: {\r\n whiteSpace: 'nowrap'\r\n },\r\n render: params => {\r\n if (column.field === 'transportMode') {\r\n return getIconForShipment(params)\r\n } else if (column.field === 'shipmentNumber') {\r\n return (\r\n {\r\n this.saveContainerFilterValuesToState(\r\n this.tableRef\r\n )\r\n }}\r\n to={this.getURLForItem(params.shipmentNumber)}\r\n >\r\n {params.shipmentNumber}\r\n \r\n )\r\n } else if (column.field === 'containerNumber') {\r\n return params.containerNumber ? (\r\n <>\r\n {\r\n this.handleContainerNumberClick(params)\r\n }}\r\n >\r\n {params.containerNumber || ''}\r\n \r\n \r\n ) : (\r\n ''\r\n )\r\n } else if (column.field === 'orderReferenceNumber') {\r\n return this.renderNavLinkOrderRef(clientId, params)\r\n } else if (column.field === 'shipmentFlagged') {\r\n return params.shipmentFlagged ? 'YES' : null\r\n } else if (column.field === 'orderRef') {\r\n return this.renderToolTipOrderRef(params.orderRef)\r\n } else if (\r\n organization?.containerTrackingURL !== null &&\r\n column.field === 'containerNumber' &&\r\n params.containerNumber !== '' &&\r\n params.containerNumber !== null\r\n ) {\r\n return params.containerNumber.split(',').map(c => {\r\n return (\r\n {\r\n const newWindow = window.open(\r\n organization?.containerTrackingURL.replace(\r\n '{CONTAINERNO}',\r\n c\r\n ),\r\n '_blank',\r\n 'noopener,noreferrer'\r\n )\r\n if (newWindow) newWindow.opener = null\r\n }}\r\n >\r\n {c}\r\n \r\n )\r\n })\r\n } else {\r\n return params[column.field]\r\n }\r\n }\r\n }\r\n })\r\n\r\n const handleColumnDrag = (sourceIndex, destinationIndex) => {\r\n // take copy of source column\r\n const sourceColumn = savedColumns[sourceIndex]\r\n // remove source column\r\n savedColumns.splice(sourceIndex, 1)\r\n // insert at destination\r\n savedColumns.splice(destinationIndex, 0, sourceColumn)\r\n // update database\r\n const viewCode = getViewCodeBySearchItem(searchItem)\r\n // map savedColumns from frontend to match the database\r\n savedColumns = savedColumns.map(column => {\r\n return {\r\n id: column.id,\r\n title: column.title,\r\n customTitle: column.customTitle,\r\n value: column.field,\r\n width: column.width,\r\n visible: column.hidden ? false : true,\r\n order: column.order,\r\n type: column.type,\r\n sortField: column.sortField\r\n }\r\n })\r\n\r\n this.setState({ orgHeaderColumns: savedColumns })\r\n\r\n saveViewColumns(\r\n viewCode,\r\n savedColumns,\r\n userViewId,\r\n currentClient?.clientViewId,\r\n true,\r\n clientId\r\n )\r\n }\r\n\r\n function handleChangeColumnHidden(column, hidden) {\r\n // Update hidden flag\r\n for (let i = 0; i < savedColumns.length; i++) {\r\n if (savedColumns[i].field === column.field) {\r\n // Set column hidden\r\n savedColumns[i].hidden = hidden\r\n localStorage.setItem(\r\n cachedHeaderKeyValue,\r\n JSON.stringify(savedColumns)\r\n )\r\n break\r\n }\r\n }\r\n }\r\n\r\n function getFilter(field) {\r\n const columnData = containerFilters.find(col => col.field === field)\r\n if (columnData) {\r\n return columnData.filterValue\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n let tableActions = [\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n },\r\n {\r\n icon: () => {\r\n return (\r\n \r\n )\r\n },\r\n isFreeAction: true\r\n }\r\n ]\r\n\r\n if (canSeeScheduledReports) {\r\n tableActions.push({\r\n icon: () => {\r\n return (\r\n \r\n this.setState({ showScheduledReports: false })\r\n }\r\n newReportData={this.state.newReportData}\r\n reportSearchTypes={this.state.containerSearchTypes}\r\n reportDateOptions={this.state.dateFiltering}\r\n relatedModule={3}\r\n />\r\n )\r\n },\r\n isFreeAction: true\r\n })\r\n }\r\n\r\n return (\r\n \r\n (\r\n \r\n ))\r\n }}\r\n actions={tableActions}\r\n options={{\r\n filtering: true,\r\n maxBodyHeight: 'calc(100vh - 470px)',\r\n pageSizeOptions: [25, 50, 75],\r\n filterRowStyle: {\r\n position: 'sticky',\r\n top: 49,\r\n background: 'white',\r\n zIndex: 5 /* optionally */\r\n },\r\n sorting: true,\r\n pageSize: 25,\r\n showTitle: false,\r\n search: true,\r\n doubleHorizontalScroll: true,\r\n columnsButton: false,\r\n draggable: true,\r\n showFirstLastPageButtons: true,\r\n toolbar: true,\r\n padding: 'dense',\r\n pagination: {\r\n rowsPerPage: 'Rows per page:',\r\n displayRows: 'off'\r\n },\r\n exportButton: { csv: true },\r\n exportAllData: true,\r\n rowStyle: rowData => ({\r\n // check if 'hot order'\r\n backgroundColor: rowData.shipmentFlagged\r\n ? '#F8AFA7'\r\n : null\r\n }),\r\n exportCsv: (columns, data) =>\r\n prepareCsvExport(\r\n columns,\r\n data,\r\n this.state.organization,\r\n searchItem + 'Export_' + Date.now()\r\n )\r\n }}\r\n onColumnDragged={handleColumnDrag}\r\n onChangeColumnHidden={handleChangeColumnHidden}\r\n />\r\n \r\n )\r\n }\r\n\r\n renderSummary = () => {\r\n const { classes } = this.props\r\n const {\r\n resultsBox1Value,\r\n resultsBox1Title,\r\n resultsBox2Value,\r\n resultsBox2Title,\r\n resultsBox3Value,\r\n resultsBox3Title,\r\n resultsBox4Value,\r\n resultsBox4Title,\r\n resultsBox5Value,\r\n resultsBox5Title,\r\n key,\r\n currentSummaryTile\r\n } = this.state\r\n\r\n const handleSummaryTileClick = (tileName, tileId) => {\r\n // these may have changed\r\n this.saveContainerFilterValuesToState(this.tableRef)\r\n var newContainerList = this.state.items.filter(\r\n i => i.status !== null && i.status.includes(tileName)\r\n )\r\n this.setState({\r\n containerList: newContainerList,\r\n currentSummaryTile: tileId\r\n })\r\n localforage.setItem(key + '.containerList', newContainerList)\r\n localforage.setItem(key + '.currentSummaryTile', tileId)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n containerList: this.state.items,\r\n currentSummaryTile: 1\r\n })\r\n localforage.setItem(\r\n key + '.containerList',\r\n this.state.items\r\n )\r\n localforage.setItem(\r\n key + '.currentSummaryTile',\r\n 1\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox2Title,\r\n 2\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox3Title,\r\n 3\r\n )\r\n }}\r\n />\r\n \r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox4Title,\r\n 4\r\n )\r\n }}\r\n />\r\n \r\n {resultsBox5Title ? (\r\n \r\n {\r\n handleSummaryTileClick(\r\n resultsBox5Title,\r\n 5\r\n )\r\n }}\r\n />\r\n \r\n ) : null}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { classes } = this.props\r\n\r\n const {\r\n clients,\r\n clientId,\r\n selectedDate,\r\n fromDate,\r\n toDate,\r\n minDate,\r\n todayDate,\r\n referenceType,\r\n dateView,\r\n itemReference,\r\n mode,\r\n organization,\r\n titleIcon,\r\n containerSearchTypes,\r\n primaryColor,\r\n themeTextColor,\r\n showContainerDialog,\r\n selectedContainer,\r\n selectedShipment,\r\n dateFiltering,\r\n containerList,\r\n selectedDateHelperText,\r\n canSeeScheduledReports\r\n } = this.state\r\n\r\n const currentClient = clients?.find(e => e.id === clientId)\r\n\r\n let contents = this.state.loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.state.error && (\r\n \r\n {\r\n this.setState({\r\n error: false\r\n })\r\n }}\r\n severity=\"error\"\r\n >\r\n {' '}\r\n Sorry, there was an error while\r\n retrieving items.\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMap(containerList)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Client\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Mode\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'mode'\r\n )\r\n }\r\n >\r\n \r\n All\r\n \r\n \r\n Air\r\n \r\n \r\n Sea\r\n \r\n \r\n Road\r\n \r\n \r\n Courier\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Search Type\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference-type'\r\n )\r\n }\r\n >\r\n {containerSearchTypes \r\n .filter(type => type.dropdownName === 'Search Type')\r\n .map(\r\n function (type, i) {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Reference # (3 chars min)\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'reference'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Date View\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'dateView'\r\n )\r\n }\r\n >\r\n {containerSearchTypes \r\n .filter(type => type.dropdownName === 'Date View')\r\n .map(\r\n function (type, i) {\r\n return (\r\n \r\n {\r\n type.searchTypeDescription\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Date\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'selectedDate'\r\n )\r\n }\r\n >\r\n {dateFiltering.map(\r\n function (date, i) {\r\n return (\r\n \r\n {\r\n date.label\r\n }\r\n \r\n )\r\n }\r\n )}\r\n \r\n \r\n {selectedDateHelperText}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n this.handleChangeValue(\r\n e,\r\n 'fromDate'\r\n )\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.handleChangeValue(\r\n e,\r\n 'toDate'\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.handleSubmit(true)\r\n }\r\n >\r\n {this.state.searching\r\n ? 'Loading...'\r\n : 'SEARCH'}\r\n \r\n \r\n \r\n \r\n RESET SEARCH\r\n \r\n \r\n {canSeeScheduledReports && (\r\n \r\n }\r\n >\r\n SCHEDULE REPORT\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderSummary()}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {this.renderContainersTable(\r\n containerList\r\n )}\r\n
\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
{contents}
\r\n }\r\n\r\n async populateClientsData() {\r\n const token = await authService.getAccessToken()\r\n const { clientId, key } = this.state\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n 'api/clients/getclientslist?module=containers',\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ clients: data }, () => {\r\n const { clients } = this.state\r\n const cachedClientId = localStorage.getItem(key + '.clientId')\r\n if (cachedClientId) {\r\n // see if cached client id is in clients array\r\n const client = clients?.find(\r\n client => client.id === cachedClientId\r\n )\r\n if (client) {\r\n this.setState({ clientId: cachedClientId }, () => {\r\n this.runClientDependentFunctions()\r\n })\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(\r\n key + '.clientId',\r\n clients[0]?.id\r\n )\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n } else {\r\n // set client id to first client in clients array\r\n this.setState({ clientId: clients[0]?.id }, () => {\r\n localStorage.setItem(key + '.clientId', clients[0]?.id)\r\n this.runClientDependentFunctions()\r\n })\r\n }\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n }\r\n\r\n async populateConfig() {\r\n const { key } = this.state\r\n const response = await fetch('api' + ApplicationPaths.AppInfo)\r\n const data = await response.json()\r\n this.setState({\r\n organization: data,\r\n canSeeScheduledReports: data.featureAccessParameters.find(\r\n fap => fap.featureCode === 'ScheduledReports'\r\n )\r\n ? true\r\n : false,\r\n primaryColor: data.colorThemePrimaryRGB,\r\n themeTextColor: data.colorThemeTextRGB,\r\n dateFiltering: data.dateFilterTypeArray\r\n })\r\n localforage.setItem(key + '.organization', data)\r\n }\r\n\r\n async fetchGridSearchTypes() {\r\n if (this.state.clientId) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetGridSearchTypes?clientId=' +\r\n this.state.clientId +\r\n '&module=CONTAINER',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n this.setState({ containerSearchTypes: data })\r\n }\r\n }\r\n }\r\n\r\n getQueryString = (useQuickSearch = true, initialLoad = false) => {\r\n const {\r\n clientId,\r\n referenceType,\r\n fromDate,\r\n toDate,\r\n mode,\r\n itemReference,\r\n originUNLOCOCodeObject,\r\n originCountryCodeObject,\r\n originName,\r\n destinationUNLOCOCodeObject,\r\n destinationCountryCodeObject,\r\n destinationName,\r\n dateView,\r\n searchItem,\r\n selectedDate\r\n } = this.state\r\n\r\n const queryString = require('query-string')\r\n\r\n var qs = {}\r\n\r\n qs['SearchItem'] = searchItem\r\n qs['referenceType'] = referenceType\r\n qs['Mode'] = mode\r\n qs['UseQuickSearch'] = true\r\n\r\n if (itemReference !== null && itemReference.length > 1) {\r\n qs['ShipmentSearchNumber'] = itemReference \r\n }\r\n\r\n if (originUNLOCOCodeObject !== null) {\r\n qs['Origin'] = originUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (originCountryCodeObject !== null) {\r\n qs['OriginCountryName'] = originCountryCodeObject.countryName\r\n }\r\n\r\n if (originName !== null) {\r\n qs['OriginName'] = originName\r\n }\r\n\r\n if (destinationUNLOCOCodeObject !== null) {\r\n qs['Destination'] = destinationUNLOCOCodeObject.unloco\r\n }\r\n\r\n if (destinationCountryCodeObject !== null) {\r\n qs['DestinationCountryName'] =\r\n destinationCountryCodeObject.countryName\r\n }\r\n\r\n if (destinationName !== null) {\r\n qs['DestinationName'] = destinationName\r\n }\r\n\r\n qs['DateType'] = dateView\r\n\r\n if (fromDate && selectedDate !== 10){\r\n qs['FromDate'] = fromDate.toISOString(false)\r\n }\r\n\r\n if (toDate && selectedDate !== 10){\r\n qs['ToDate'] = toDate.toISOString(false)\r\n }\r\n\r\n if (clientId !== null) {\r\n qs['ClientId'] = clientId\r\n }\r\n\r\n if (initialLoad) {\r\n qs['InitialLoad'] = true\r\n }\r\n\r\n qs['SelectedDate'] = selectedDate\r\n\r\n return queryString.stringify(qs)\r\n }\r\n\r\n async populateTableData(useQuickSearch = true, initialLoad = false) {\r\n // set summary tiles back to default\r\n this.setState({ currentSummaryTile: 1 })\r\n\r\n const { clientId, key } = this.state\r\n this.setState({ searching: true })\r\n const token = await authService.getAccessToken()\r\n\r\n if (clientId !== null) {\r\n this.setState({ error: false })\r\n\r\n const headers = {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n\r\n const response = await fetch(\r\n `api/shipments/GetContainers?` +\r\n this.getQueryString(useQuickSearch, initialLoad),\r\n headers\r\n )\r\n\r\n if (response.ok) {\r\n const data = await response.json()\r\n\r\n this.setState({\r\n resultsBox1Value: data.resultsBox1Value,\r\n resultsBox1Title: data.resultsBox1Title,\r\n resultsBox2Value: data.resultsBox2Value,\r\n resultsBox2Title: data.resultsBox2Title,\r\n resultsBox3Value: data.resultsBox3Value,\r\n resultsBox3Title: data.resultsBox3Title,\r\n resultsBox4Value: data.resultsBox4Value,\r\n resultsBox4Title: data.resultsBox4Title,\r\n resultsBox5Value: data.resultsBox5Value,\r\n resultsBox5Title: data.resultsBox5Title\r\n })\r\n\r\n localforage.setItem(key + '.containerList', data.containers)\r\n localforage.setItem(key + '.items', data.containers)\r\n localStorage.setItem(\r\n key + '.resultsBox1Value',\r\n data.resultsBox1Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox1Title',\r\n data.resultsBox1Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Value',\r\n data.resultsBox2Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox2Title',\r\n data.resultsBox2Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Value',\r\n data.resultsBox3Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox3Title',\r\n data.resultsBox3Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Value',\r\n data.resultsBox4Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox4Title',\r\n data.resultsBox4Title\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Value',\r\n data.resultsBox5Value\r\n )\r\n localStorage.setItem(\r\n key + '.resultsBox5Title',\r\n data.resultsBox5Title\r\n )\r\n\r\n this.setState({\r\n items: data.containers,\r\n containerList: data.containers,\r\n loading: false\r\n })\r\n } else {\r\n this.setState({ loading: false, error: true })\r\n }\r\n } else {\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.setState({ searching: false })\r\n }\r\n}\r\nexport default withStyles(styles)(ContainerTable)\r\n","import React, { useState, useEffect } from 'react'\r\nimport ContainerTable from './ContainerTable'\r\nimport { canSeeContainers } from '../utils/permissions'\r\nimport { getAppInfo } from '../api/api'\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport UnauthorizedMessage from './shared/UnauthorizedMessage'\r\n\r\nexport default function ContainerManagement() {\r\n const [loading, setIsLoading] = useState(true)\r\n const [showSearchContainer, setShowSearchContainer] = useState(false)\r\n\r\n useEffect(() => {\r\n getAppInfo(\r\n null,\r\n async data => {\r\n setIsLoading(false)\r\n setShowSearchContainer(await canSeeContainers(data))\r\n },\r\n () => {\r\n setIsLoading(false)\r\n }\r\n )\r\n }, [])\r\n\r\n return (\r\n
\r\n {loading ? (\r\n \r\n ) : showSearchContainer ? (\r\n \r\n ) : (\r\n UnauthorizedMessage({ moduleName: 'Containers' })\r\n )}\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Route } from 'react-router-dom'\r\nimport { Layout } from './components/Layout'\r\nimport Dashboard from './components/Dashboard'\r\nimport Shipments from './components/Shipments'\r\nimport Accounting from './components/Accounting'\r\nimport Booking from './components/Booking'\r\nimport BookingDetails from './components/BookingDetails'\r\nimport ShipmentDetails from './components/ShipmentDetails'\r\nimport Customs from './components/Customs'\r\nimport CustomDetails from './components/CustomDetails'\r\nimport CreateShipment from './components/CreateShipment'\r\nimport PackLinesInfo from './components/CreateShipment/PackLinesInfo'\r\nimport Containers from './components/CreateShipment/Containers'\r\nimport Notes from './components/CreateShipment/Notes'\r\nimport Review from './components/CreateShipment/Review'\r\nimport { PackageLineInfo } from './components/PackageLineInfo'\r\nimport CreateOrder from './components/CreateOrder'\r\nimport CreateOrderLines from './components/CreateOrder/CreateOrderLines'\r\nimport CreateOrderNotes from './components/CreateOrder/CreateOrderNotes'\r\nimport CreateOrderReview from './components/CreateOrder/CreateOrderReview'\r\nimport AccountDetails from './components/AccountDetails'\r\nimport Password from './components/Password'\r\nimport Clients from './components/Clients'\r\nimport UserClients from './components/UserClients'\r\nimport ClientDetails from './components/ClientDetails'\r\nimport ClientUsers from './components/ClientUsers'\r\nimport OrgUsers from './components/OrgUsers'\r\nimport OrganizationDetails from './components/OrganizationDetails'\r\nimport ClientUserDetails from './components/ClientUserDetails'\r\nimport AdminUsers from './components/AdminUsers'\r\nimport DataMappingIndex from './components/DataMapping/DataMappingIndex'\r\nimport DataMappingEdit from './components/DataMapping/DataMappingEdit'\r\nimport AdminUserDetails from './components/AdminUserDetails'\r\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute'\r\nimport AdminAuthorizeRoute from './components/api-authorization/AdminAuthorizeRoute'\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes'\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants'\r\nimport Orders from './components/Orders'\r\nimport OrderDetails from './components/OrderDetails'\r\nimport OrderLines from './components/OrderLines'\r\nimport Delivery from './components/Delivery'\r\nimport Pickup from './components/Pickup'\r\nimport Report from './components/Reports.tsx'\r\nimport ReportDetails from './components/ReportDetails'\r\nimport './custom.css'\r\nimport DashboardsMore from './components/DashboardsMore'\r\nimport DashboardDetails from './components/DashboardDetails'\r\nimport ContainerManagement from './components/ContainerManagement'\r\nimport ReactGA from 'react-ga4'\r\n\r\n// need to check what the current domain is and set the trackingId accordingly\r\nif (window.location.hostname === 'havi.connectcast.io') {\r\n ReactGA.initialize('G-EX0YRM3CEX')\r\n}\r\n\r\nconst App = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default App\r\n","import 'bootstrap/dist/css/bootstrap.css'\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { createRoot } from 'react-dom/client'\r\nimport { BrowserRouter } from 'react-router-dom'\r\nimport App from './App'\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')\r\nconst root = createRoot(document.getElementById('root'))\r\n\r\n// need to get zoom level from local storage\r\n// if it exists, set it\r\n// if it doesn't, set it to 100\r\nlet zoomLevel = localStorage.getItem('zoomLevel')\r\nif (zoomLevel === null) {\r\n zoomLevel = 100\r\n localStorage.setItem('zoomLevel', zoomLevel)\r\n}\r\n\r\ndocument.body.style.zoom = `${zoomLevel}%`\r\n\r\nroot.render(\r\n \r\n \r\n \r\n)\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client'\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants'\r\n\r\nexport class AuthorizeService {\r\n _callbacks = []\r\n _nextSubscriptionId = 0\r\n _user = null\r\n _isAuthenticated = false\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true\r\n\r\n async isRole(roleName) {\r\n const isAuthenticated = await this.isAuthenticated()\r\n const user = await this.getUser()\r\n const isRole =\r\n user !== null &&\r\n user.role === roleName &&\r\n user.role.length === roleName.length\r\n return isAuthenticated && isRole\r\n }\r\n\r\n async isSuperAdmin() {\r\n return this.isRole('Super Administrator')\r\n }\r\n\r\n async isAdmin() {\r\n return this.isRole('Administrator')\r\n }\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser()\r\n return !!user\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile\r\n }\r\n\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.getUser()\r\n return user && user.profile\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.getUser()\r\n return user && user.access_token\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n const silentUser = await this.userManager.signinSilent(\r\n this.createArguments()\r\n )\r\n this.updateState(silentUser)\r\n return this.success(state)\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error(\r\n \"Popup disabled. Change 'AuthorizeService.js:AuthorizeService._popupDisabled' to false to enable it.\"\r\n )\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(\r\n this.createArguments()\r\n )\r\n this.updateState(popUpUser)\r\n return this.success(state)\r\n } catch (popUpError) {\r\n if (popUpError.message === 'Popup window closed') {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error('The user closed the window.')\r\n } else if (!this._popUpDisabled) {\r\n console.log('Popup authentication error: ', popUpError)\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(\r\n this.createArguments(state)\r\n )\r\n return this.redirect()\r\n } catch (redirectError) {\r\n console.log(\r\n 'Redirect authentication error: ',\r\n redirectError\r\n )\r\n return this.error(redirectError)\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized()\r\n const user = await this.userManager.signinCallback()\r\n this.updateState(user)\r\n return this.success(user && user.state)\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error)\r\n return this.error('There was an error signing in.')\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error(\r\n \"Popup disabled. Change 'AuthorizeService.js:AuthorizeService._popupDisabled' to false to enable it.\"\r\n )\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments())\r\n this.updateState(undefined)\r\n return this.success(state)\r\n } catch (popupSignOutError) {\r\n console.log('Popup signout error: ', popupSignOutError)\r\n try {\r\n await this.userManager.signoutRedirect(\r\n this.createArguments(state)\r\n )\r\n return this.redirect()\r\n } catch (redirectSignOutError) {\r\n console.log('Redirect signout error: ', redirectSignOutError)\r\n return this.error(redirectSignOutError)\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized()\r\n try {\r\n const response = await this.userManager.signoutCallback()\r\n this.updateState(null)\r\n return this.success(response && response.data)\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`)\r\n return this.error(error)\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user\r\n this._isAuthenticated = !!this._user\r\n this.notifySubscribers()\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({\r\n callback,\r\n subscription: this._nextSubscriptionId++\r\n })\r\n return this._nextSubscriptionId - 1\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) =>\r\n element.subscription === subscriptionId\r\n ? { found: true, index }\r\n : { found: false }\r\n )\r\n .filter(element => element.found === true)\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(\r\n `Found an invalid number of subscriptions ${subscriptionIndex.length}`\r\n )\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1)\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback\r\n callback()\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state }\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message }\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state }\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect }\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return\r\n }\r\n\r\n let response = await fetch(\r\n ApplicationPaths.ApiAuthorizationClientConfigurationUrl\r\n )\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`)\r\n }\r\n\r\n let settings = await response.json()\r\n settings.automaticSilentRenew = true\r\n settings.includeIdTokenInSilentRenew = true\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n })\r\n\r\n this.userManager = new UserManager(settings)\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser()\r\n this.updateState(undefined)\r\n })\r\n }\r\n\r\n static get instance() {\r\n return authService\r\n }\r\n}\r\n\r\nconst authService = new AuthorizeService()\r\n\r\nexport default authService\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n}\r\n","export const ApplicationName = 'PSAShipping'\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n}\r\n\r\nexport const AppInfoActions = {\r\n Info: 'info'\r\n}\r\n\r\nexport const CustomActions = {\r\n Index: '/customs'\r\n}\r\n\r\nexport const AccountingActions = {\r\n Index: '/accounting'\r\n}\r\n\r\nexport const BookingActions = {\r\n Index: '/bookings'\r\n}\r\n\r\nexport const OrderActions = {\r\n Index: '/orders',\r\n OrderLines: '/orderlines',\r\n Create: '/orders/create'\r\n}\r\n\r\nexport const ShipmentActions = {\r\n Index: '/shipments',\r\n Create: '/shipments/create',\r\n PackLines: '/packlines'\r\n}\r\n\r\nexport const ContainerActions = {\r\n Index: '/containers',\r\n Delivery: '/containers/delivery',\r\n Pickup: '/containers/pickup'\r\n}\r\n\r\nexport const AccountActions = {\r\n Index: '/account',\r\n Password: '/password'\r\n}\r\n\r\nexport const ClientActions = {\r\n Index: '/clients'\r\n}\r\n\r\nexport const DataMapping = {\r\n Index: '/admin/data_mapping',\r\n Create: '/admin/data_mapping/new'\r\n}\r\n\r\nexport const UserActions = {\r\n Index: '/users',\r\n Admin: '/admin/users',\r\n Org: '/clientusers'\r\n}\r\n\r\nexport const OrganizationActions = {\r\n Index: '/organizations'\r\n}\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n}\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n}\r\nexport const ReportActions = {\r\n Index: '/powerbireports'\r\n}\r\n\r\nconst prefix = '/authentication'\r\nconst appInfoPrefix = '/app'\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Account/Register',\r\n IdentityManagePath: '/Identity/Account/Manage',\r\n AppInfo: `${appInfoPrefix}/${AppInfoActions.Info}`,\r\n Customs: `${CustomActions.Index}`,\r\n Accounting: `${AccountingActions.Index}`,\r\n Bookings: `${BookingActions.Index}`,\r\n Orders: `${OrderActions.Index}`,\r\n CreateOrder: `${OrderActions.Create}`,\r\n OrderLines: `${OrderActions.OrderLines}`,\r\n Shipments: `${ShipmentActions.Index}`,\r\n CreateShipment: `${ShipmentActions.Create}`,\r\n CreateShipmentPackLines: `${ShipmentActions.PackLines}`,\r\n Account: `${AccountActions.Index}`,\r\n Password: `${AccountActions.Password}`,\r\n Clients: `${ClientActions.Index}`,\r\n Organizations: `${OrganizationActions.Index}`,\r\n Users: `${UserActions.Index}`,\r\n OrgUsers: `${UserActions.Org}`,\r\n DataMappingIndex: `${DataMapping.Index}`,\r\n DataMappingCreate: `${DataMapping.Create}`,\r\n AdminUsers: `${UserActions.Admin}`,\r\n Reports: `${ReportActions.Index}`,\r\n Delivery: `${ContainerActions.Delivery}`,\r\n Pickup: `${ContainerActions.Pickup}`,\r\n Container: `${ContainerActions.Index}`\r\n}\r\n","import authService from '../components/api-authorization/AuthorizeService'\r\nimport { ApplicationPaths } from '../components/api-authorization/ApiAuthorizationConstants'\r\n\r\nasync function fetchCall(\r\n uri,\r\n successBlock = () => {},\r\n failureBlock = () => {},\r\n isFile = false\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch(uri, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await (isFile ? response.blob() : response.json())\r\n successBlock(data, response.headers)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nasync function fetchPOSTCall(\r\n uri,\r\n successBlock = () => {},\r\n failureBlock = () => {},\r\n isFile = false,\r\n postData\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch(uri, {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(postData)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await (isFile ? response.blob() : response.json())\r\n successBlock(data, response.headers)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function getAppInfo(\r\n clientId = null,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const query = clientId !== null ? '?clientId=' + clientId : ''\r\n const uri = 'api' + ApplicationPaths.AppInfo + query\r\n fetchCall(uri, successBlock, failureBlock)\r\n}\r\n\r\nexport async function downloadCSV(\r\n query,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = 'api/Shipments/DownloadShipmentResults?' + query\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function downloadOrdersCSV(\r\n searchItem,\r\n query,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n var uri = ''\r\n switch (searchItem) {\r\n case 'OrderLines':\r\n uri = 'api/Orders/DownloadOrderLineResults?'\r\n break\r\n default:\r\n uri = 'api/Orders/DownloadOrderResults?'\r\n }\r\n uri += query\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function downloadInvoicesCSV(\r\n query,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = 'api/Accounting/DownloadAccountingResults?' + query\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function downloadInvoicePDF(\r\n searchNumber,\r\n clientId,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri =\r\n 'api/Accounting/DownloadInvoice?InvoiceSearchNumber=' +\r\n searchNumber +\r\n '&ClientId=' +\r\n clientId\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function downloadInvoicePDFForShipment(\r\n searchNumber,\r\n clientId,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri =\r\n 'api/Shipments/DownloadInvoiceOnShipment?InvoiceSearchNumber=' +\r\n searchNumber +\r\n '&ClientId=' +\r\n clientId\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function downloadDocumentPDFForShipment(\r\n document,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n let uri = 'api/Shipments/DownloadDocumentOnShipment'\r\n if (document.DownloadAll) {\r\n uri = 'api/Shipments/DownloadAllDocumentsOnShipment'\r\n }\r\n fetchPOSTCall(uri, successBlock, failureBlock, true, document)\r\n}\r\n\r\nexport async function downloadDocumentPDFForOrder(\r\n orderNumber,\r\n orderNumberSplit,\r\n clientId,\r\n documentName,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri =\r\n 'api/Orders/DownloadDocumentOnOrder?OrderSearchNumber=' +\r\n orderNumber +\r\n '&OrderSearchNumberSplit=' +\r\n orderNumberSplit +\r\n '&SearchItem=' +\r\n btoa(encodeURIComponent(documentName)).replace('/', '_') +\r\n '&ClientId=' +\r\n clientId\r\n fetchCall(uri, successBlock, failureBlock, true)\r\n}\r\n\r\nexport async function getCreatedShipment(\r\n shipmentNumber,\r\n editCopyBookingClientId,\r\n editCopyBookingNumber,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n if (editCopyBookingNumber !== null && editCopyBookingNumber !== undefined) {\r\n const postData = {\r\n BookingNumber: editCopyBookingNumber,\r\n ClientId: editCopyBookingClientId\r\n }\r\n fetch('api/CreateShipments/RetrieveBookingForUpdate', {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(postData)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n } else {\r\n fetch(\r\n 'api/CreateShipments/GetCreateShipment?shipmentNumber=' +\r\n shipmentNumber,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n }\r\n}\r\n\r\nexport async function getCreatedOrder(\r\n orderId,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch('api/CreateOrders/GetCreateOrder?orderId=' + orderId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function updateOrderPlanning(\r\n orderPlanningData,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch('api/CreateOrders/UpdateOrderPlanning', {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(orderPlanningData)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n successBlock()\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function updateShipment(\r\n shipmentData,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch('api/Shipments/UpdateShipment', {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(shipmentData)\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n successBlock('success')\r\n } else {\r\n var responseText = await response.text()\r\n failureBlock(responseText)\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function getScheduledReports(module = 2) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch('api/ScheduledJobs?module=' + module, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n if (response.ok) {\r\n return await response.json()\r\n }\r\n return []\r\n}\r\n\r\nexport async function createScheduledReport(scheduledReport) {\r\n // need to determine the URL for the API call based on the scheduledreport relatedmodule\r\n // 2, 4, 1 = Shipment\r\n // 0 = Order\r\n // 3 = Container\r\n // 5 = Invoice\r\n\r\n let urlModule = ''\r\n switch (scheduledReport.RelatedModule) {\r\n case 0:\r\n urlModule = 'Order'\r\n break\r\n case 1:\r\n case 2:\r\n case 4:\r\n urlModule = 'Shipment'\r\n break\r\n case 3:\r\n urlModule = 'Container'\r\n break\r\n case 5:\r\n urlModule = 'Invoice'\r\n break\r\n default:\r\n urlModule = 'Shipment'\r\n break\r\n }\r\n\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n `api/ScheduledJobs/Create${urlModule}ScheduledReport?${scheduledReport.ReportQueryString}`,\r\n {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'POST',\r\n body: JSON.stringify(scheduledReport)\r\n }\r\n )\r\n\r\n if (response.ok) {\r\n return await response.json()\r\n }\r\n return null\r\n}\r\n\r\nexport async function updateScheduledReport(scheduledReport) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(`api/ScheduledJobs/${scheduledReport.Id}`, {\r\n headers: !token\r\n ? {}\r\n : {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n },\r\n method: 'PUT',\r\n body: JSON.stringify(scheduledReport)\r\n })\r\n\r\n if (response.ok) {\r\n return true\r\n }\r\n return null\r\n}\r\n\r\nexport async function deleteScheduledReport(id) {\r\n const token = await authService.getAccessToken()\r\n const response = await fetch(`api/ScheduledJobs/${id}`, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: 'DELETE'\r\n })\r\n\r\n if (response.ok) {\r\n return true\r\n }\r\n return null\r\n}\r\n\r\nexport async function getContainerOrderLines(\r\n containerNumber,\r\n shipmentNumber,\r\n clientId,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch(\r\n 'api/Containers/GetContainerOrderLines?containerNumber=' +\r\n containerNumber +\r\n '&shipmentNumber=' +\r\n shipmentNumber +\r\n '&clientId=' +\r\n clientId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function alignClientUserModuleAccess(\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch('api/clients/UpdateClientUsersModuleAccessForOrgs', {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: 'POST'\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function getCreateOrderTemplate(\r\n orderId,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const token = await authService.getAccessToken()\r\n fetch('api/CreateOrders/GetCreateOrderTemplate?orderId=' + orderId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n })\r\n .then(async response => {\r\n if (response.ok) {\r\n const data = await response.json()\r\n successBlock(data)\r\n } else {\r\n failureBlock()\r\n }\r\n })\r\n .catch(e => {\r\n failureBlock()\r\n })\r\n}\r\n\r\nexport async function getUNLOCO(\r\n query,\r\n isName,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = `api/DataManagement/GetUNLOCOs?pageNumber=1&pageSize=20&searchQuery=${query}&isNameSearch=${\r\n isName ? 'true' : 'false'\r\n }`\r\n fetchCall(uri, successBlock, failureBlock)\r\n}\r\n\r\nexport async function getLocationByUNLOCO(\r\n unloco,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = `api/DataManagement/GetUNLOCO?unloco=${unloco}`\r\n fetchCall(uri, successBlock, failureBlock)\r\n}\r\n\r\nexport async function getCountry(\r\n query,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = `api/DataManagement/GetCountries?pageNumber=1&pageSize=20&searchQuery=${query}&isNameSearch=false`\r\n fetchCall(uri, successBlock, failureBlock)\r\n}\r\n\r\nexport async function getClientData(\r\n id,\r\n successBlock = () => {},\r\n failureBlock = () => {}\r\n) {\r\n const uri = 'api/clients/' + id\r\n fetchCall(uri, successBlock, failureBlock)\r\n}\r\n\r\nexport async function getTypesData() {\r\n /*const token = await authService.getAccessToken()\r\n const response = await fetch(\r\n 'api/DataManagement/GetDataTypes?dataTypesRequested=ALL',\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` }\r\n }\r\n )\r\n if (response.ok) {\r\n const data = await response.json()\r\n sessionStorage.setItem(dataTypesKey(), JSON.stringify(data))\r\n setDataTypes(data)\r\n }*/\r\n}\r\n","import React, { PureComponent } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { Card, CardHeader, CardContent } from '@material-ui/core'\r\nimport { Checkbox, Typography } from '@material-ui/core'\r\nimport { FormControlLabel } from '@material-ui/core'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = theme => ({\r\n title: {\r\n // backgroundColor: theme.palette.primary.main,\r\n // color: theme.palette.primary.contrastText\r\n\r\n color: theme.palette.primary.main\r\n },\r\n textFieldForm: {\r\n width: theme.textFieldForm.width\r\n }\r\n})\r\nclass CardTitle extends PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n title,\r\n itemLabel,\r\n disabledOn,\r\n searchOn,\r\n checkOn,\r\n disablePadding\r\n } = this.props\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n }\r\n />\r\n \r\n {!checkOn ? (\r\n this.props.children\r\n ) : (\r\n \r\n }\r\n label={itemLabel}\r\n />\r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\nCardTitle.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n title: PropTypes.string.isRequired,\r\n checkOn: PropTypes.bool.isRequired,\r\n itemLabel: PropTypes.string,\r\n disabledOn: PropTypes.bool,\r\n searchOn: PropTypes.bool,\r\n callback: PropTypes.func,\r\n disablePadding: PropTypes.bool\r\n}\r\nexport default withStyles(styles)(CardTitle)\r\n","import React from 'react'\r\nimport Alert from '@material-ui/lab/Alert'\r\nimport { Table, TableContainer, TableBody } from '@material-ui/core'\r\nimport { TableHead, TableRow, TableCell } from '@material-ui/core'\r\nimport CheckIcon from '@material-ui/icons/Check'\r\n\r\nexport function renderTable(\r\n baseArray,\r\n arrayKeys,\r\n itemKey,\r\n classes,\r\n renderLink = () => {},\r\n tableStyles\r\n) {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {arrayKeys?.map(arrayKey => {\r\n return (\r\n \r\n {arrayKey.label}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n {baseArray?.map((item, index) => {\r\n return (\r\n \r\n {arrayKeys?.map(arrayKey => {\r\n return (\r\n \r\n
\r\n {arrayKey.icon &&\r\n item['actualDate'] && (\r\n
\r\n \r\n
\r\n )}\r\n {arrayKey.icon &&\r\n !item['actualDate'] && (\r\n
\r\n \r\n
\r\n )}\r\n {arrayKey.link ? (\r\n renderLink(\r\n item,\r\n index,\r\n arrayKey\r\n )\r\n ) : (\r\n
\r\n {item[\r\n arrayKey.key\r\n ] || '-'}\r\n
\r\n )}\r\n
\r\n \r\n )\r\n })}\r\n
\r\n )\r\n })}\r\n
\r\n \r\n
\r\n {baseArray?.length === 0 && (\r\n \r\n No records found.\r\n \r\n )}\r\n
\r\n )\r\n}\r\n"],"sourceRoot":""}