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);
        }
Exemple #2
0
        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);
        }