Esempio n. 1
0
        public CswNbtRequestDataModel.CswRequestReturn fulfillRequest(CswNbtRequestDataModel.RequestFulfill Request)
        {
            //delegate has to be static because you can't create an instance yet: you don't have resources until the delegate is actually called
            CswNbtRequestDataModel.CswRequestReturn Ret = new CswNbtRequestDataModel.CswRequestReturn();
            var InitDriverType = new CswWebSvcDriver <CswNbtRequestDataModel.CswRequestReturn, CswNbtRequestDataModel.RequestFulfill>(
                CswWebSvcResourceInitializer: new CswWebSvcResourceInitializerNbt(_Context, null),
                ReturnObj: Ret,
                WebSvcMethodPtr: CswNbtWebServiceRequesting.fulfillContainerMoveRequest,
                ParamObj: Request
                );

            InitDriverType.run();
            return(Ret);
        }
        private static Int32 moveContainers(CswNbtResources NbtResources, CswNbtObjClassRequestItem RequestItem, CswNbtRequestDataModel.RequestFulfill Request)
        {
            Int32 Ret = 0;

            if (null != RequestItem)
            {
                foreach (string ContainerId in Request.ContainerIds)
                {
                    CswNbtObjClassContainer ContainerNode = NbtResources.Nodes[ContainerId];
                    if (null != ContainerNode)
                    {
                        ContainerNode.Location.SelectedNodeId = RequestItem.Location.SelectedNodeId;
                        ContainerNode.Location.RefreshNodeName();
                        ContainerNode.postChanges(ForceUpdate: false);
                        Ret += 1;
                    }
                }
            }
            return(Ret);
        }
        /// <summary>
        /// WCF method to fulfill a Move Containers request
        /// </summary>
        public static void fulfillContainerMoveRequest(ICswResources CswResources, CswNbtRequestDataModel.CswRequestReturn Ret, CswNbtRequestDataModel.RequestFulfill Request)
        {
            CswNbtResources           NbtResources = _validate(CswResources);
            CswNbtObjClassRequestItem RequestItem  = NbtResources.Nodes[Request.RequestItemId];

            if (null != RequestItem)
            {
                Int32 ContainersMoved = moveContainers(NbtResources, RequestItem, Request);
                Ret.Data.Succeeded = ContainersMoved > 0;
                if (Ret.Data.Succeeded)
                {
                    if (CswTools.IsDouble(RequestItem.TotalMoved.Value))
                    {
                        RequestItem.TotalMoved.Value += ContainersMoved;
                    }
                    else
                    {
                        RequestItem.TotalMoved.Value = ContainersMoved;
                    }
                    RequestItem.Status.Value = CswNbtObjClassRequestItem.Statuses.Moved;
                    RequestItem.FulfillmentHistory.AddComment("Moved " + ContainersMoved + " containers to " +
                                                              CswNbtNode.getNodeLink(RequestItem.Location.SelectedNodeId, RequestItem.Location.CachedFullPath));
                    RequestItem.postChanges(ForceUpdate: false);
                }
            }
        }