예제 #1
0
        private async Task <(RouteSegment, RouteSegmentAdded)> InsertRouteSegmentClone(RouteSegment routeSegment)
        {
            var routeSegmentClone = CreateRouteSegmentClone(routeSegment);

            await _geoDatabase.InsertRouteSegment(routeSegmentClone);

            var startRouteNode = (await _geoDatabase.GetIntersectingStartRouteNodes(routeSegmentClone)).FirstOrDefault();
            var endRouteNode   = (await _geoDatabase.GetIntersectingEndRouteNodes(routeSegmentClone)).FirstOrDefault();

            var routeSegmentAddedEvent = _routeSegmentEventFactory.CreateAdded(routeSegmentClone, startRouteNode, endRouteNode);

            return(routeSegmentClone, routeSegmentAddedEvent);
        }
예제 #2
0
        private async Task <List <RouteNetworkEvent> > InsertReplacementRouteSegments(List <RouteSegment> routeSegments)
        {
            var routeNetworkEvents = new List <RouteNetworkEvent>();

            foreach (var routeSegment in routeSegments)
            {
                await _geoDatabase.InsertRouteSegment(routeSegment);

                var startRouteNode = (await _geoDatabase.GetIntersectingStartRouteNodes(routeSegment)).FirstOrDefault();
                var endRouteNode   = (await _geoDatabase.GetIntersectingEndRouteNodes(routeSegment)).FirstOrDefault();

                var routeSegmentAddedEvent = _routeSegmentEventFactory.CreateAdded(routeSegment, startRouteNode, endRouteNode);
                routeNetworkEvents.Add(routeSegmentAddedEvent);
            }

            return(routeNetworkEvents);
        }