private async static Task AddRidesToSummary(DocumentDbContext docdbCtx, IEnumerable <TrackedRideDocument> rides) { var summaryCollection = await docdbCtx.GetCollectionAsync(DocumentDbContext.CollectionVehiclesSummary); var summary = await new VehicleSummaryQuery(docdbCtx).ExecuteAsync(); var vehicles = new List <string>(summary.Vehicles); foreach (var ride in rides) { if (!vehicles.Contains(ride.Device)) { vehicles.Add(ride.Device); } var rideSpeed = ride.GpsAverageSpeed; summary.AverageSpeed = ((summary.AverageSpeed * summary.TotalMiles) + (rideSpeed * ride.Miles)) / (summary.TotalMiles + ride.Miles); summary.TotalMiles += ride.Miles; summary.TotalSeconds += (ride.EndTime - ride.StartTime).TotalSeconds; summary.Breakdowns += ride.Breakdowns; } summary.Vehicles = vehicles.ToArray(); summary.VehiclesCount = vehicles.Count; await docdbCtx.UpdateDocumentAsync(summary, summaryCollection); }
private async static Task AddRidesToSummary(DocumentDbContext docdbCtx, IEnumerable<TrackedRideDocument> rides) { var summaryCollection = await docdbCtx.GetCollectionAsync(DocumentDbContext.CollectionVehiclesSummary); var summary = await new VehicleSummaryQuery(docdbCtx).ExecuteAsync(); var vehicles = new List<string>(summary.Vehicles); foreach (var ride in rides) { if (!vehicles.Contains(ride.Device)) { vehicles.Add(ride.Device); } var rideSpeed = ride.GpsAverageSpeed; summary.AverageSpeed = ((summary.AverageSpeed * summary.TotalMiles) + (rideSpeed * ride.Miles)) / (summary.TotalMiles + ride.Miles); summary.TotalMiles += ride.Miles; summary.TotalSeconds += (ride.EndTime - ride.StartTime).TotalSeconds; summary.Breakdowns += ride.Breakdowns; } summary.Vehicles = vehicles.ToArray(); summary.VehiclesCount = vehicles.Count; await docdbCtx.UpdateDocumentAsync(summary, summaryCollection); }