示例#1
0
        public void InnerConduitCut(SingleConduitInfo singleConduitInfo, MultiConduitInnerConduitCut @event)
        {
            // Get the multi conduit
            var multiConduit = conduitNetworkQueryService.GetMultiConduitInfo(@event.MultiConduitId);

            // Get the walk of interest of the multi conduit
            var walkOfInterest = routeNetworkQueryService.GetWalkOfInterestInfo(multiConduit.WalkOfInterestId);

            // Get the node
            var nodeWhereToCut = routeNetworkQueryService.GetRouteNodeInfo(@event.PointOfInterestId);

            ConduitCutter.CutConduit(singleConduitInfo, walkOfInterest, nodeWhereToCut);

            conduitNetworkQueryService.UpdateSingleConduitInfo(singleConduitInfo);
        }
        public void UpdateSingleConduitInfo(SingleConduitInfo singleConduitInfo)
        {
            // Parent multi conduit
            if (singleConduitInfo.MultiConduitId != Guid.Empty)
            {
                singleConduitInfo.Parent = _multiConduitInfos[singleConduitInfo.MultiConduitId];
            }

            // Segment references
            ResolveReferences(singleConduitInfo);

            // Update
            if (_singleConduitInfos.ContainsKey(singleConduitInfo.Id))
            {
                var existingSingleConduitInfo = _singleConduitInfos[singleConduitInfo.Id];

                // Update node to segment dictionary
                _pointOfInterestIndex.Update(existingSingleConduitInfo, singleConduitInfo);

                _mapper.Map <SingleConduitInfo, SingleConduitInfo>(singleConduitInfo, existingSingleConduitInfo);
            }
            // Insert
            else
            {
                // Update node to segment dictionary
                _pointOfInterestIndex.Update(null, singleConduitInfo);

                _singleConduitInfos.Add(singleConduitInfo.Id, singleConduitInfo);

                // If part of multi conduit add reference to it from that one
                if (singleConduitInfo.MultiConduitId != Guid.Empty)
                {
                    // Add to multi conduit children
                    if (_multiConduitInfos[singleConduitInfo.MultiConduitId].Children == null)
                    {
                        _multiConduitInfos[singleConduitInfo.MultiConduitId].Children = new List <ILine>();
                    }

                    _multiConduitInfos[singleConduitInfo.MultiConduitId].Children.Add(singleConduitInfo);
                }
            }
        }