public void saveContainerActions(ContainerData.ReconciliationRequest Request) { if (null != Request.ContainerActions) { foreach (ContainerData.ReconciliationActions Action in Request.ContainerActions) { if (Action.Action == CswEnumNbtContainerLocationActionOptions.MarkMissing.ToString()) { _createNotScannedContainerLocation(Action, CswEnumNbtContainerLocationTypeOptions.Missing); } else { CswPrimaryKey ContLocNodeId = CswConvert.ToPrimaryKey(Action.ContainerLocationId); if (CswTools.IsPrimaryKey(ContLocNodeId)) { CswNbtObjClassContainerLocation ContLocNode = _CswNbtResources.Nodes.GetNode(ContLocNodeId); ContLocNode.Action.Value = Action.Action; ContLocNode.ActionByUser.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; ContLocNode.postChanges(false); } else if (Action.Action == CswEnumNbtContainerLocationActionOptions.Ignore.ToString()) { _createNotScannedContainerLocation(Action, CswEnumNbtContainerLocationTypeOptions.Ignore); } } } } }
public ContainerData getOutstandingActionsCount(ContainerData.ReconciliationRequest Request) { _setContainersTree(Request); if (ContainersTree.getChildNodeCount() > 0) { for (int i = 0; i < ContainersTree.getChildNodeCount(); i++) //Location Nodes { ContainersTree.goToNthChild(i); if (ContainersTree.getChildNodeCount() > 0) { for (int j = 0; j < ContainersTree.getChildNodeCount(); j++) //Container Nodes { ContainersTree.goToNthChild(j); if (ContainersTree.getChildNodeCount() > 0) //ContainerLocation Nodes { CswNbtObjClassContainerLocation ContainerLocationNode = _getMostRelevantContainerLocation(); if (null != ContainerLocationNode && false == String.IsNullOrEmpty(ContainerLocationNode.Action.Value) && ContainerLocationNode.Action.Value != CswEnumNbtContainerLocationTypeOptions.Ignore.ToString() && ContainerLocationNode.ActionApplied.Checked != CswEnumTristate.True) { Data.OutstandingActionsCount++; } } ContainersTree.goToParentNode(); } } ContainersTree.goToParentNode(); } } return(Data); }
internal CswNbtNode createContainerLocationNode(CswNbtNode ContainerNode = null, String Action = "", DateTime?NullableScanDate = null, CswPrimaryKey LocationId = null, String ContainerScan = "", String Type = "Receipt") { CswNbtNode ret = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(_getNodeTypeId("Container Location"), delegate(CswNbtNode NewNode) { CswNbtObjClassContainerLocation ContainerLocationNode = NewNode; if (null == ContainerNode) { ContainerNode = createContainerNode(LocationId: LocationId); } ContainerLocationNode.Container.RelatedNodeId = ContainerNode.NodeId; ContainerLocationNode.Action.Value = Action; ContainerLocationNode.Type.Value = Type; DateTime ScanDate = NullableScanDate ?? DateTime.Now; ContainerLocationNode.ScanDate.DateTimeValue = ScanDate; if (LocationId != null) { ContainerLocationNode.Location.SelectedNodeId = LocationId; ContainerLocationNode.Location.RefreshNodeName(); } ContainerLocationNode.ContainerScan.Text = ContainerScan; }); _finalize(); return(ret); }
private Dictionary <CswPrimaryKey, CswNbtObjClassContainerLocation> _getRelevantScansOutsideLocationScope(ContainerData.ReconciliationRequest Request) { Dictionary <CswPrimaryKey, CswNbtObjClassContainerLocation> OutOfScopeScans = new Dictionary <CswPrimaryKey, CswNbtObjClassContainerLocation>(); ICswNbtTree OutOfScopeScansTree = _CswNbtResources.Trees.getTreeFromView(_getReconciliationScansForOutOfScopeContainersView(Request), false, true, false); if (OutOfScopeScansTree.getChildNodeCount() > 0) { for (int i = 0; i < OutOfScopeScansTree.getChildNodeCount(); i++) //Location Nodes { OutOfScopeScansTree.goToNthChild(i); if (OutOfScopeScansTree.getChildNodeCount() > 0) { for (int j = 0; j < OutOfScopeScansTree.getChildNodeCount(); j++) //ContainerLocation Nodes { OutOfScopeScansTree.goToNthChild(j); if (OutOfScopeScansTree.getChildNodeCount() == 0) //Container Nodes { //No container means it's out of scope - only add the most recent scan record CswNbtObjClassContainerLocation OutOfScopeScan = OutOfScopeScansTree.getNodeForCurrentPosition(); if (false == OutOfScopeScans.ContainsKey(OutOfScopeScan.Container.RelatedNodeId)) { OutOfScopeScans.Add(OutOfScopeScan.Container.RelatedNodeId, OutOfScopeScan); } } OutOfScopeScansTree.goToParentNode(); } } OutOfScopeScansTree.goToParentNode(); } } return(OutOfScopeScans); }
public void processReconciliationActionsTestUndisposeAndMove() { CswPrimaryKey ContainerLocId, ContainerLocationLocId; TestData.getTwoDifferentLocationIds(out ContainerLocId, out ContainerLocationLocId); CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(LocationId: ContainerLocId); ContainerNode.DisposeContainer(); Assert.AreEqual(CswEnumTristate.True, ContainerNode.Disposed.Checked.ToString()); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.UndisposeAndMove.ToString(), LocationId: ContainerLocationLocId, Type: CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()); Assert.AreNotEqual(ContainerLocationNode.Location.SelectedNodeId, ContainerNode.Location.SelectedNodeId); Assert.AreEqual(CswEnumNbtContainerLocationStatusOptions.DisposedAtWrongLocation.ToString(), ContainerLocationNode.Status.Value); CswScheduleLogicNbtContainerReconciliationActions Sched = _getReconciliationActionSched(); Sched.processReconciliationActions(TestData.CswNbtResources); Assert.AreEqual(CswEnumTristate.True, ContainerLocationNode.ActionApplied.Checked.ToString()); Assert.AreEqual(ContainerLocationNode.Location.SelectedNodeId, ContainerNode.Location.SelectedNodeId); Assert.AreEqual(CswEnumTristate.False, ContainerNode.Missing.Checked.ToString()); Assert.AreEqual(CswEnumTristate.False, ContainerNode.Disposed.Checked.ToString()); }
private void _createNotScannedContainerLocation(ContainerData.ReconciliationActions Action, CswEnumNbtContainerLocationTypeOptions Type) { CswNbtMetaDataObjectClass ContLocOc = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerLocationClass); CswNbtMetaDataNodeType ContLocNt = ContLocOc.FirstNodeType; if (null != ContLocNt) { _CswNbtResources.Nodes.makeNodeFromNodeTypeId(ContLocNt.NodeTypeId, delegate(CswNbtNode NewNode) { CswNbtObjClassContainerLocation ContLocNode = NewNode; ContLocNode.Container.RelatedNodeId = CswConvert.ToPrimaryKey(Action.ContainerId); ContLocNode.Location.SelectedNodeId = CswConvert.ToPrimaryKey(Action.LocationId); ContLocNode.Type.Value = Type.ToString(); ContLocNode.Status.Value = CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString(); ContLocNode.ActionApplied.Checked = CswEnumTristate.False; if (Type == CswEnumNbtContainerLocationTypeOptions.Missing) { ContLocNode.Action.Value = CswEnumNbtContainerLocationActionOptions.MarkMissing.ToString(); } else if (Type == CswEnumNbtContainerLocationTypeOptions.Ignore) { ContLocNode.Action.Value = CswEnumNbtContainerLocationActionOptions.Ignore.ToString(); } ContLocNode.ActionByUser.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; ContLocNode.ScanDate.DateTimeValue = DateTime.Now; ContLocNode.User.RelatedNodeId = _CswNbtResources.CurrentNbtUser.UserId; }); } }
//TODO - Looking back, this is pretty evil (and fragile) - we're manipulating the global tree under the assumption that //TODO - it's in the proper relationship level. We should really fix this. private CswNbtObjClassContainerLocation _getMostRelevantContainerLocation() { CswNbtObjClassContainerLocation ContainerLocationNode = null; Int32 NumOfContainerLocationRecords = ContainersTree.getChildNodeCount(); for (int k = 0; k < NumOfContainerLocationRecords; k++) { ContainersTree.goToNthChild(k); if (null == ContainerLocationNode) { ContainerLocationNode = ContainersTree.getNodeForCurrentPosition(); if (ContainerLocationNode.Type.Value == CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()) { ContainersTree.goToParentNode(); break; } } else { CswNbtObjClassContainerLocation TempContainerLocationNode = ContainersTree.getNodeForCurrentPosition(); if (TempContainerLocationNode.Type.Value == CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString() && ContainerLocationNode.Type.Value != CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()) { ContainerLocationNode = TempContainerLocationNode; ContainersTree.goToParentNode(); break; } } ContainersTree.goToParentNode(); } return(ContainerLocationNode); }
private void _executeReconciliationAction(CswNbtResources _CswNbtResources, CswNbtObjClassContainerLocation ContainerLocation) { CswNbtObjClassUser UserNode = _CswNbtResources.Nodes[ContainerLocation.ActionByUser.RelatedNodeId]; // case 30346 - use user's info for audit context if (null != UserNode) { _CswNbtResources.AuditFirstName = UserNode.FirstName; _CswNbtResources.AuditLastName = UserNode.LastName; _CswNbtResources.AuditUsername = UserNode.Username; } CswNbtObjClassContainer Container = _CswNbtResources.Nodes[ContainerLocation.Container.RelatedNodeId]; if (null != Container) { CswEnumNbtContainerLocationActionOptions Action = ContainerLocation.Action.Value; if (Action == CswEnumNbtContainerLocationActionOptions.Undispose || Action == CswEnumNbtContainerLocationActionOptions.UndisposeAndMove) { Container.UndisposeContainer(OverridePermissions: true, CreateContainerLocation: false); } if (Action == CswEnumNbtContainerLocationActionOptions.MoveToLocation || Action == CswEnumNbtContainerLocationActionOptions.UndisposeAndMove) { Container.Location.SelectedNodeId = ContainerLocation.Location.SelectedNodeId; Container.Location.RefreshNodeName(); Container.Location.CreateContainerLocation = false; } Container.Missing.Checked = Action == CswEnumNbtContainerLocationActionOptions.MarkMissing ? CswEnumTristate.True : CswEnumTristate.False; Container.postChanges(false); } }
internal void RevertNodeProps() { foreach (KeyValuePair <CswPrimaryKey, String> ContainerLocationNodeId in _ContainerLocationNodeActions) { CswNbtObjClassContainerLocation ContainerLocationNode = CswNbtResources.Nodes[ContainerLocationNodeId.Key]; ContainerLocationNode.Action.Value = ContainerLocationNodeId.Value; ContainerLocationNode.postChanges(false); } }
public void setStatusTestNotScanned() { CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Ignore.ToString(), Type: CswEnumNbtContainerLocationTypeOptions.Missing.ToString()); Assert.AreEqual(CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString(), ContainerLocationNode.Status.Value); }
public void processReconciliationActionsTestMoreRecentExists() { CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(); CswNbtObjClassContainerLocation FirstContainerLocationNode = TestData.Nodes.createContainerLocationNode(ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Undispose.ToString(), DateTime.Now.AddSeconds(-1)); TestData.Nodes.createContainerLocationNode(ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Ignore.ToString()); CswScheduleLogicNbtContainerReconciliationActions Sched = _getReconciliationActionSched(); Sched.processReconciliationActions(TestData.CswNbtResources); Assert.AreEqual(CswEnumTristate.True, FirstContainerLocationNode.ActionApplied.Checked.ToString()); Assert.AreEqual(CswEnumTristate.False, ContainerNode.Missing.Checked.ToString()); }
public void setStatusTestMissing() { CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(); ContainerNode.Missing.Checked = CswEnumTristate.True; ContainerNode.postChanges(false); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Ignore.ToString(), Type: CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()); Assert.AreEqual(CswEnumNbtContainerLocationStatusOptions.Missing.ToString(), ContainerLocationNode.Status.Value); }
public void setStatusTestCorrect() { CswPrimaryKey ContainerLocId, ContainerLocationLocId; TestData.getTwoDifferentLocationIds(out ContainerLocId, out ContainerLocationLocId); CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(LocationId: ContainerLocId); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Ignore.ToString(), LocationId: ContainerLocId); Assert.AreEqual(ContainerLocationNode.Location.SelectedNodeId, ContainerNode.Location.SelectedNodeId); Assert.AreEqual(CswEnumNbtContainerLocationStatusOptions.Correct.ToString(), ContainerLocationNode.Status.Value); }
private void _executeReconciliationActions(CswNbtResources _CswNbtResources, CswPrimaryKey ContainerLocationId) { CswNbtObjClassContainerLocation ContainerLocation = _CswNbtResources.Nodes[ContainerLocationId]; if (null != ContainerLocation) { if (_isMostRecentContainerLocation(_CswNbtResources, ContainerLocation)) { _executeReconciliationAction(_CswNbtResources, ContainerLocation); } ContainerLocation.ActionApplied.Checked = CswEnumTristate.True; ContainerLocation.postChanges(false); } }
public void processReconciliationActionsTestMarkMissing() { CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.MarkMissing.ToString(), Type: CswEnumNbtContainerLocationTypeOptions.Missing.ToString()); CswScheduleLogicNbtContainerReconciliationActions Sched = _getReconciliationActionSched(); Sched.processReconciliationActions(TestData.CswNbtResources); Assert.AreEqual(CswEnumTristate.True, ContainerLocationNode.ActionApplied.Checked.ToString()); Assert.AreEqual(CswEnumTristate.True, ContainerNode.Missing.Checked.ToString()); }
public void setStatusTestDisposedAtWrongLocation() { CswPrimaryKey ContainerLocId, ContainerLocationLocId; TestData.getTwoDifferentLocationIds(out ContainerLocId, out ContainerLocationLocId); CswNbtObjClassContainer ContainerNode = TestData.Nodes.createContainerNode(LocationId: ContainerLocId); ContainerNode.DisposeContainer(); Assert.AreEqual(CswEnumTristate.True, ContainerNode.Disposed.Checked.ToString()); CswNbtObjClassContainerLocation ContainerLocationNode = TestData.Nodes.createContainerLocationNode( ContainerNode.Node, CswEnumNbtContainerLocationActionOptions.Ignore.ToString(), LocationId: ContainerLocationLocId, Type: CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()); Assert.AreNotEqual(ContainerLocationNode.Location.SelectedNodeId, ContainerNode.Location.SelectedNodeId); Assert.AreEqual(CswEnumNbtContainerLocationStatusOptions.DisposedAtWrongLocation.ToString(), ContainerLocationNode.Status.Value); }
private bool _isMostRecentContainerLocation(CswNbtResources _CswNbtResources, CswNbtObjClassContainerLocation ContainerLocation) { bool isMostRecent = true; CswNbtView ContainerLocationsView = new CswNbtView(_CswNbtResources); CswNbtMetaDataObjectClass ContainerLocationOc = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerLocationClass); CswNbtViewRelationship ParentRelationship = ContainerLocationsView.AddViewRelationship(ContainerLocationOc, true); ParentRelationship.NodeIdsToFilterOut.Add(ContainerLocation.NodeId); CswNbtMetaDataObjectClassProp ContainerOcp = ContainerLocationOc.getObjectClassProp(CswNbtObjClassContainerLocation.PropertyName.Container); ContainerLocationsView.AddViewPropertyAndFilter(ParentRelationship, MetaDataProp: ContainerOcp, Value: ContainerLocation.Container.RelatedNodeId.PrimaryKey.ToString(), SubFieldName: CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID, FilterMode: CswEnumNbtFilterMode.Equals); CswNbtMetaDataObjectClassProp ScanDateOcp = ContainerLocationOc.getObjectClassProp(CswNbtObjClassContainerLocation.PropertyName.ScanDate); ContainerLocationsView.AddViewPropertyAndFilter(ParentRelationship, MetaDataProp: ScanDateOcp, Value: ContainerLocation.ScanDate.DateTimeValue.ToString(), SubFieldName: CswNbtFieldTypeRuleDateTime.SubFieldName.Value, FilterMode: CswEnumNbtFilterMode.GreaterThan); ICswNbtTree ContainerLocationsTree = _CswNbtResources.Trees.getTreeFromView(ContainerLocationsView, false, false, false); if (ContainerLocationsTree.getChildNodeCount() > 0) { isMostRecent = false; } return(isMostRecent); }
public ContainerData getContainerStatistics(ContainerData.ReconciliationRequest Request) { for (int i = 0; i < CswEnumNbtContainerLocationStatusOptions._All.Count(); i++) { Data.ContainerStatistics.Add(new ContainerData.ReconciliationStatistics()); Data.ContainerStatistics[i].ContainerCount = 0; Data.ContainerStatistics[i].AmountScanned = 0; Data.ContainerStatistics[i].Status = CswEnumNbtContainerLocationStatusOptions._All.ToArray()[i].ToString(); } _setContainersTree(Request); if (ContainersTree.getChildNodeCount() > 0) { Collection <CswPrimaryKey> AllLocationIds = new Collection <CswPrimaryKey>(); Collection <CswPrimaryKey> ScannedLocationIds = new Collection <CswPrimaryKey>(); for (int i = 0; i < ContainersTree.getChildNodeCount(); i++) //Location Nodes { ContainersTree.goToNthChild(i); AllLocationIds.Add(ContainersTree.getNodeIdForCurrentPosition()); if (ContainersTree.getChildNodeCount() > 0) { for (int j = 0; j < ContainersTree.getChildNodeCount(); j++) //Container Nodes { ContainersTree.goToNthChild(j); CswNbtTreeNodeProp DisposedProp = ContainersTree.getChildNodePropsOfNode().FirstOrDefault(p => p.ObjectClassPropName == CswNbtObjClassContainer.PropertyName.Disposed); if (ContainersTree.getChildNodeCount() > 0) //ContainerLocation Nodes { CswNbtObjClassContainerLocation ContainerLocationNode = _getMostRelevantContainerLocation(); if (null != ContainerLocationNode && _isTypeEnabled(ContainerLocationNode.Type.Value, Request)) { _incrementContainerCount(Data.ContainerStatistics, ContainerLocationNode.Status.Value, ContainerLocationNode.Type.Value); if (ContainerLocationNode.Type.Value == CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()) { ScannedLocationIds.Add(ContainerLocationNode.Location.SelectedNodeId); } } else if (null != DisposedProp && false == CswConvert.ToBoolean(DisposedProp.Field1)) { _incrementContainerCount(Data.ContainerStatistics, CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString()); } } else { _incrementContainerCount(Data.ContainerStatistics, CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString()); } ContainersTree.goToParentNode(); } } ContainersTree.goToParentNode(); } if (_isTypeEnabled(CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString(), Request)) { foreach (CswPrimaryKey LocationId in AllLocationIds) { if (false == ScannedLocationIds.Contains(LocationId)) { Data.UnscannedLocations.Add(_makeUnscannedLocation(LocationId)); } } } } foreach (CswNbtObjClassContainerLocation OutOfScopeScan in _getRelevantScansOutsideLocationScope(Request).Values) { _incrementContainerCount(Data.ContainerStatistics, CswEnumNbtContainerLocationStatusOptions.WrongLocation.ToString()); } foreach (ContainerData.ReconciliationStatistics Stat in Data.ContainerStatistics) { if (Stat.ContainerCount > 0) { Stat.PercentScanned = CswConvert.ToDouble(Stat.AmountScanned) / CswConvert.ToDouble(Stat.ContainerCount) * 100.0; } else { Stat.PercentScanned = 0.0; } } return(Data); }
public ContainerData getContainerStatuses(ContainerData.ReconciliationRequest Request) { _setContainersTree(Request); if (ContainersTree.getChildNodeCount() > 0) { for (int i = 0; i < ContainersTree.getChildNodeCount(); i++) //Location Nodes { ContainersTree.goToNthChild(i); CswPrimaryKey LocationId = ContainersTree.getNodeIdForCurrentPosition(); if (ContainersTree.getChildNodeCount() > 0) { for (int j = 0; j < ContainersTree.getChildNodeCount(); j++) //Container Nodes { bool IncludeContainer = true; ContainerData.ReconciliationStatuses ContainerStatus = new ContainerData.ReconciliationStatuses(); ContainersTree.goToNthChild(j); CswNbtNode ContainerNode = ContainersTree.getNodeForCurrentPosition();//In this case, instancing the base node is faster ContainerStatus.ContainerId = ContainerNode.NodeId.ToString(); ContainerStatus.ContainerBarcode = ContainerNode.Properties[CswNbtObjClassContainer.PropertyName.Barcode].AsBarcode.Barcode; ContainerStatus.LocationId = LocationId.ToString(); ContainerStatus.ExpectedLocation = ContainerNode.Properties[CswNbtObjClassContainer.PropertyName.Location].AsLocation.CachedFullPath; ContainerStatus.ContainerStatus = CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString(); CswPrimaryKey ScannedLocationId = null; if (ContainersTree.getChildNodeCount() > 0) //ContainerLocation Nodes { CswNbtObjClassContainerLocation ContainerLocationNode = _getMostRelevantContainerLocation(); if (null != ContainerLocationNode) { ContainerStatus.ContainerLocationId = ContainerLocationNode.NodeId.ToString(); ScannedLocationId = ContainerLocationNode.Location.SelectedNodeId; ContainerStatus.ScanDate = ContainerLocationNode.ScanDate.DateTimeValue.Date.ToShortDateString(); ContainerStatus.Action = ContainerLocationNode.Action.Value; ContainerStatus.Completed = ContainerLocationNode.ActionApplied.Checked.ToString(); if (_isTypeEnabled(ContainerLocationNode.Type.Value, Request)) { ContainerStatus.ContainerStatus = ContainerLocationNode.Status.Value; if (ContainerLocationNode.Type.Value == CswEnumNbtContainerLocationTypeOptions.ReconcileScans.ToString()) { ContainerStatus.ScannedLocation = ContainerLocationNode.Location.CachedFullPath; } } else if (ContainerNode.Properties[CswNbtObjClassContainer.PropertyName.Disposed].AsLogical.Checked == CswEnumTristate.True) { IncludeContainer = false; } } } ContainerStatus.ActionOptions = _getActionOptions(ContainerStatus.ContainerStatus, ScannedLocationId); if (IncludeContainer) { Data.ContainerStatuses.Add(ContainerStatus); } ContainersTree.goToParentNode(); } } ContainersTree.goToParentNode(); } } foreach (CswNbtObjClassContainerLocation OutOfScopeScan in _getRelevantScansOutsideLocationScope(Request).Values) { CswNbtNode ContainerNode = _CswNbtResources.Nodes[OutOfScopeScan.Container.RelatedNodeId]; Data.ContainerStatuses.Add(new ContainerData.ReconciliationStatuses { ContainerId = OutOfScopeScan.Container.RelatedNodeId.ToString(), ContainerBarcode = OutOfScopeScan.ContainerScan.Text, LocationId = OutOfScopeScan.Location.SelectedNodeId.ToString(), ExpectedLocation = ContainerNode.Properties[CswNbtObjClassContainer.PropertyName.Location].AsLocation.CachedFullPath, ScannedLocation = OutOfScopeScan.Location.CachedFullPath, ContainerStatus = CswEnumNbtContainerLocationStatusOptions.WrongLocation.ToString(), ContainerLocationId = OutOfScopeScan.NodeId.ToString(), ScanDate = OutOfScopeScan.ScanDate.DateTimeValue.Date.ToShortDateString(), Action = OutOfScopeScan.Action.Value, Completed = OutOfScopeScan.ActionApplied.Checked.ToString(), ActionOptions = _getActionOptions(CswEnumNbtContainerLocationStatusOptions.WrongLocation.ToString(), OutOfScopeScan.Location.SelectedNodeId) }); } return(Data); }