Ejemplo n.º 1
0
        public async Task Reset(DateTime from, DateTime to)
        {
            // Reset based on day
            var days = await dayRepository.GetDays(from, to);

            var pings = new List <Ping>();

            foreach (var day in days)
            {
                pings = await pingRepository.GetPings(day);
                await ResetPings(pings);

                if (day.RideId != null)
                {
                    var ride = await rideRepository.GetByIdFull((int)day.RideId);
                    await ResetPings(ride.Pings.ToList());

                    rideRepository.Delete(day.RideId);
                    await rideRepository.SaveAsync();
                }

                dayRepository.Delete(day.Id);
            }

            await dayRepository.SaveAsync();

            // Reset the remaining pings
            pings = await pingRepository.GetBetweenDates(from, to);
            await ResetPings(pings);

            cache.ClearCache();
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SaveRide(Ride _ride)
        {
            var ride = await rideRepository.GetByIdFull(_ride.Id);

            ride.AccuracyCutoff = _ride.AccuracyCutoff;
            ride.ResetDistance();
            rideRepository.Update(ride);
            await rideRepository.SaveAsync();

            return(RedirectToAction("Index", "Ride", new { id = ride.Id }));
        }
Ejemplo n.º 3
0
        private async Task SaveRidePings(List <Ping> pings)
        {
            var ride = await GetCurrentRide();

            if (!(ride is Ride))
            {
                ride = new Ride()
                {
                    TimeFrom = pings[0].Time,
                    TimeTo   = pings[pings.Count - 1].Time
                };
                rideRepository.Insert(ride);
                await rideRepository.SaveAsync();
            }
            else
            {
                ride.TimeTo = pings[pings.Count - 1].Time;
                rideRepository.Update(ride);
                await rideRepository.SaveAsync();
            }

            // Try to get the day
            var day = await dayRepository.GetByRide(ride);

            if (!(day is Day))
            {
                day = new Day()
                {
                    TimeFrom = pings[0].Time,
                    TimeTo   = pings[pings.Count - 1].Time,
                    RideId   = ride.Id
                };
                dayRepository.Insert(day);
                await dayRepository.SaveAsync();
            }
            else
            {
                day.TimeTo = pings[pings.Count - 1].Time;
                dayRepository.Update(day);
                await dayRepository.SaveAsync();
            }

            foreach (var ping in pings)
            {
                ping.RideId     = ride.Id;
                ping.LocationId = null;
                ping.Processed  = 1;
                ping.DayId      = day.Id;
                pingRepository.Update(ping);
            }

            await pingRepository.SaveAsync();

            cache.ClearCache();

            // Save the ride distance to speed up some statistics
            ride = await rideRepository.GetByIdFull(ride.Id);

            ride.ResetDistance();
            rideRepository.Update(ride);
            await rideRepository.SaveAsync();
        }