Beispiel #1
0
 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);
                 }
             }
         }
     }
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }
Beispiel #6
0
        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;
                });
            }
        }
Beispiel #7
0
        //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);
            }
        }
Beispiel #9
0
 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);
        }
Beispiel #18
0
 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);
 }
Beispiel #19
0
 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);
 }