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); } } }