/// <summary> /// Получение заголовочных данных по треку на основании данных о маршрутах за день /// </summary> /// <returns>The track header.</returns> /// <param name="routes">Routes.</param> public static IRouteElementHeader ToTrackHeader(this IEnumerable <IRoute> routes) { if (routes == null) { throw new ArgumentNullException(nameof(routes)); } var enumerable = routes as IRoute[] ?? routes.ToArray(); var h = new RouteElementHeader { Distance = enumerable.Sum(a => a.Header.Distance) }; var duration = enumerable.Select(item => item.Header.Duration).Aggregate(TimeSpan.Zero, (current, d) => current + d); h.Duration = duration; return(h); }
/// <summary> /// Получение данных о сегменте маршрута транспорта /// </summary> /// <returns>The segment header.</returns> /// <param name="points">Points.</param> public static IRouteElementHeader ToSegmentHeader(this IEnumerable <IRoutePoint> points) { if (points == null) { throw new ArgumentNullException(nameof(points)); } var routePoints = points as IRoutePoint[] ?? points.ToArray(); var h = new RouteElementHeader { Distance = routePoints.ToSegmentDistance(), Duration = routePoints.ToSegmentDuration(), StarTime = routePoints.FirstOrDefault().Time, StopTime = routePoints.LastOrDefault().Time }; return(h); }