private void OuterConduitCut(MultiConduitInfo multiConduitInfo, MultiConduitOuterConduitCut @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(multiConduitInfo, walkOfInterest, nodeWhereToCut); conduitNetworkQueryService.UpdateMultiConduitInfo(multiConduitInfo); }
// Apply outer conduit cut event private void Apply(MultiConduitOuterConduitCut @event) { }
private void OnMultiConduitOuterConduitCut(ConduitClosureInfo conduitClosure, MultiConduitOuterConduitCut @event) { // Get multi conduit var multiConduit = conduitNetworkQueryService.GetMultiConduitInfo(@event.MultiConduitId); var relatedSegments = FindRelatedSegmentInfo(multiConduit, @event.PointOfInterestId); if (relatedSegments.Exists(s => s.RelationType == ConduitRelationTypeEnum.Incomming)) { var incommingSegment = relatedSegments.Find(s => s.RelationType == ConduitRelationTypeEnum.Incomming); // Find incomming port if (conduitClosure.Sides.Exists(s => s.Ports.Exists(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Incomming))) { var side = conduitClosure.Sides.Find(s => s.Ports.Exists(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Incomming)); var port = side.Ports.Find(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Incomming); port.ConnectionKind = ConduitClosureInternalConnectionKindEnum.NotConnected; port.ConnectedToSide = 0; port.ConnectedToPort = 0; port.MultiConduitSegmentId = incommingSegment.Segment.Id; port.MultiConduitSegment = null; // to force re-resolving } } if (relatedSegments.Exists(s => s.RelationType == ConduitRelationTypeEnum.Outgoing)) { var incommingSegment = relatedSegments.Find(s => s.RelationType == ConduitRelationTypeEnum.Outgoing); // Find incomming port if (conduitClosure.Sides.Exists(s => s.Ports.Exists(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Outgoing))) { var side = conduitClosure.Sides.Find(s => s.Ports.Exists(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Outgoing)); var port = side.Ports.Find(p => p.MultiConduitId == @event.MultiConduitId && p.MultiConduitSegmentEndKind == ConduitEndKindEnum.Outgoing); port.ConnectionKind = ConduitClosureInternalConnectionKindEnum.NotConnected; port.ConnectedToSide = 0; port.ConnectedToPort = 0; port.MultiConduitSegmentId = incommingSegment.Segment.Id; port.MultiConduitSegment = null; // to force re-resolving } } conduitClosureRepository.UpdateConduitClosureInfo(conduitClosure); }