Example #1
0
        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);
        }
Example #2
0
 // Apply outer conduit cut event
 private void Apply(MultiConduitOuterConduitCut @event)
 {
 }
Example #3
0
        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);
        }