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(); }
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 })); }
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(); }