Пример #1
0
        public static double GetAvgConsumption(this TrackedRideDocument tr)
        {
            var baseConsumptionLiters     = (DefaultConsumptionLitersPer100Miles * tr.Miles) / 100.0;
            var additionalPercent         = tr.GpsAverageSpeed <= 60.0 ? 0.0 : (tr.GpsAverageSpeed - 60.0) / 100.0;
            var totalLiters               = baseConsumptionLiters + baseConsumptionLiters * additionalPercent;
            var totalInLitersPer100Miles  = (totalLiters * 100.0) / tr.Miles;
            var totalInGallonsPer100Miles = totalInLitersPer100Miles * 0.264172052;

            return(totalInGallonsPer100Miles);
        }
Пример #2
0
        private TrackedRideDocument CreateTrackedRideForRide(Ride ride)
        {
            var tr = new TrackedRideDocument();

            tr.Device    = ride.Vehicle.DeviceId;
            tr.StartTime = ride.StartDateTime;
            tr.EndTime   = ride.EndDateTime;
            tr.DriverId  = ride.DriverId;
            AddGpsPoints(tr);
            AddObds(tr);

            return(tr);
        }
Пример #3
0
        private void AddObds(TrackedRideDocument tr)
        {
            int iter     = 0;
            var rideObds = _obds.Where(o => o.DriverId == tr.DriverId && o.DeviceId == tr.Device &&
                                       tr.StartTime <= o.Date && tr.EndTime >= o.Date).ToList();

            if (!rideObds.Any())
            {
                rideObds = _obds.ToList();
            }
            tr.Obds = rideObds.Select(og => new ObdData()
            {
                Code = og.Code,
                Date = tr.StartTime + TimeSpan.FromMinutes(++iter)
            }).Where(o => o.Date < tr.EndTime).ToArray();
        }
Пример #4
0
        private void AddGpsPoints(TrackedRideDocument trackedRide)
        {
            var rnd       = new Random();
            var randomKey = _routesGps.Keys.ToArray()[rnd.Next(0, _routesGps.Keys.Count - 1)];
            var gps       = _routesGps[randomKey];

            trackedRide.Gps = gps;
            if (gps.Length > 1)
            {
                var total = 0.0;
                for (var idx = 0; idx < gps.Length - 1; idx++)
                {
                    total += gps[idx + 1].DistanceFrom(gps[idx]);
                }
                trackedRide.Miles = total;
                // Create a random avg speed betwwen 10 and 90
                trackedRide.GpsAverageSpeed = 10.0 + (rnd.NextDouble() * 90.0);
                // Update EndTime accordly to the avg speed
                var hours = trackedRide.Miles / trackedRide.GpsAverageSpeed;
                trackedRide.EndTime = trackedRide.StartTime + TimeSpan.FromSeconds(hours * 3600.0);
            }
        }