public IActionResult GetFuelTrend(int tripId)
        {
            var user = _repo.GetUser(User);

            if (user == null)
            {
                return(Unauthorized());
            }

            var trip = _db.Trips.Include(t => t.Vehicle)
                       .Include(t => t.TripData).ThenInclude(d => d.SignalType)
                       .FirstOrDefault(t => t.User.Id == user.Id && t.TripId == tripId);

            if (trip != null)
            {
                var tripStatistic   = new TripStatistic();
                var fuelConsumption = new FuelConsumption(trip.Vehicle?.FuelType == FuelType.Diesel);
                var speedTrend      = tripStatistic.GetSpeedTrendObd(trip);

                var consumption = fuelConsumption.CalcFuelConsumption(trip, speedTrend);

                return(Ok(JsonConvert.SerializeObject(consumption.OrderBy(c => c.Item1))));
            }

            return(NotFound());
        }
Beispiel #2
0
        private void RecalculateFuelConsumption(Trip trip)
        {
            var tripStatistic   = new TripStatistic();
            var fuelConsumption = new FuelConsumption(trip.Vehicle?.FuelType == FuelType.Diesel);
            var speedTrend      = tripStatistic.GetSpeedTrendObd(trip);

            fuelConsumption.CalcFuelConsumption(trip, speedTrend);
        }
Beispiel #3
0
        private void SetBasicData(List <Trip> trips)
        {
            var statistics = new TripStatistic();

            foreach (var trip in trips)
            {
                statistics.CalculateBasicData(trip);
            }
        }
Beispiel #4
0
        public List <Tuple <DateTime, double> > CalcFuelConsumption(Trip trip, List <Tuple <DateTime, double> > speedTrend = null)//returns list with date und l/h
        {
            try
            {
                Prepair();
                ExtractNeededInformations(trip);

                if (_fuelRateInLproH.Count == 0) //got fuelrate NOT over obd calc it
                {
                    RefineOxyInformations();

                    if (speedTrend == null)
                    {
                        TripStatistic tripStatistic = new TripStatistic();
                        speedTrend = tripStatistic.GetSpeedTrendObd(trip);
                    }

                    _fuelRateInLproH = CalcFuelRate();
                }

                var    fuelRateInLpro100Km = new List <Tuple <DateTime, double> >();
                double summForAverage      = 0;

                for (int i = 0; i < Math.Min(_fuelRateInLproH.Count, speedTrend.Count); ++i)
                {
                    double tmp;
                    if (speedTrend[i].Item2 < 2
                        ) //to filter out to small values and 0 values that will destroy the calculation
                    {
                        tmp = 0;
                    }
                    else
                    {
                        tmp = _fuelRateInLproH[i].Item2 * 100 / speedTrend[i].Item2; //convert from l/h in l/100km
                    }

                    summForAverage += tmp;
                    fuelRateInLpro100Km.Add(new Tuple <DateTime, double>(_fuelRateInLproH[i].Item1, tmp));
                }

                trip.FuelConsumption = summForAverage / Math.Min(_fuelRateInLproH.Count, speedTrend.Count);

                return(_fuelRateInLproH);
            }
            catch (Exception)
            {
                return(new List <Tuple <DateTime, double> >());
            }
        }
        public IActionResult GetGpsTrend(int tripId)
        {
            var user = _repo.GetUser(User);

            if (user == null)
            {
                return(Unauthorized());
            }

            var trip = _db.Trips.Include(t => t.Vehicle).Include(t => t.TripData).ThenInclude(d => d.SignalType)
                       .FirstOrDefault(t => t.User.Id == user.Id && t.TripId == tripId);

            if (trip != null)
            {
                var tripStatistic = new TripStatistic();
                var gpsTrend      = tripStatistic.GetGpsTrend(trip);
                return(Ok(JsonConvert.SerializeObject(gpsTrend.OrderBy(i => i.Item1))));
            }

            return(NotFound());
        }