public int Count(FilteredBinding binding) { using (var db = GetMainContext()) { var userTrackings = db.Trackings.WhereUser(UserId) .WhereTimestampInclusive(binding); return(userTrackings.Count()); } }
public int GetCount(FilteredBinding binding) { using (var db = GetMainContext()) { var query = db.Incomes.WhereUser(UserId) .Where(x => x.Date >= binding.From && x.Date <= binding.To); return(query.Count()); } }
public double GetMaxSpeed(FilteredBinding binding) { using (var context = GetMainContext()) { var maxSpeed = context.Trackings.WhereUser(UserId) .WhereTimestampInclusive(binding) .Max(x => x.Speed); return(maxSpeed ?? 0); } }
public IEnumerable <KeyValuePair <int, int> > CountByYear(FilteredBinding binding) { using (var context = GetMainContext()) { return(context.Trackings.WhereUser(UserId) .WhereTimestampInclusive(binding.From, binding.To) .GroupBy(x => x.Timestamp.Year) .OrderByDescending(x => x.Key) .Select(x => new KeyValuePair <int, int>(x.Count(), x.Key)) .ToList()); } }
public int GetDistance(FilteredBinding binding) { binding.From = binding.From ?? DateTime.MinValue; binding.To = binding.To ?? DateTime.MaxValue; using (var db = GetMainContext()) { var total = 0; // Already calculated distance. By day. { var from = binding.From.Value.TimeOfDay != TimeSpan.Zero ? binding.From.Value.Date.AddDays(1) : binding.From.Value; var to = binding.To.Value.Date; total = db.TrackingDistances.WhereUser(UserId) .WhereTimestampFromInclusive(from, to) .Sum(x => x.DistanceInMeters); } var lastDate = db.TrackingDistances.WhereUser(UserId) .OrderByDescending(x => x.Timestamp) .FirstOrDefault() .Timestamp; if (lastDate > binding.From.Value && binding.From.Value.TimeOfDay != TimeSpan.Zero) { var to = binding.From.Value.Date == binding.To.Value.Date ? binding.To.Value : binding.From.Value.Date.AddDays(1); total += db.Trackings.WhereUser(UserId) .Distance(binding.From.Value, to); } if (lastDate > binding.To.Value && binding.To.Value.TimeOfDay != TimeSpan.Zero && binding.From.Value.Date != binding.To.Value.Date) { total += db.Trackings.WhereUser(UserId) .Distance(binding.To.Value.Date, binding.To.Value); } binding.To = binding.To.HasValue ? binding.To : DateTime.Now; if (lastDate < binding.To.Value.Date) { var from = lastDate.AddDays(1) < binding.From ? binding.From : lastDate.AddDays(1); // TODO: Include last tracking from previous date total += db.Trackings.WhereUser(UserId) .Distance(from.Value, binding.To.Value); } return(total); } }
public IEnumerable <GroupedByMonth <int> > CountByMonth(FilteredBinding binding) { using (var context = GetMainContext()) { return(context.Trackings.WhereUser(UserId) .WhereTimestampInclusive(binding.From, binding.To) .GroupBy(x => new { x.Timestamp.Year, x.Timestamp.Month }) .OrderByDescending(x => x.Key.Year) .ThenByDescending(x => x.Key.Month) .Select(x => new GroupedByMonth <int>(x.Count(), x.Key.Year, x.Key.Month)) .ToList()); } }
public ConsumationGetBinding(FilteredBinding binding) { From = binding.From; To = binding.To; }
public int CountUnique(FilteredBinding binding) { throw new NotImplementedException(); }
public double GetMaxSpeed([FromQuery] FilteredBinding binding) => _trackingHandler.GetMaxSpeed(binding);
public int GetDistance([FromQuery] FilteredBinding binding) => _trackingHandler.GetDistance(binding);
public int GetUniqueCount([FromQuery] FilteredBinding binding) => _trackingHandler.CountUnique(binding);
public IActionResult GetCountByYear([FromQuery] FilteredBinding binding) => Ok(_trackingHandler.CountByYear(binding));
public IEnumerable <GroupedByMonth <int> > GetCountByMonth([FromQuery] FilteredBinding binding) => _trackingHandler.CountByMonth(binding);
public ExpenseGetBinding(FilteredBinding binding) { From = binding.From; To = binding.To; }
public ExpenseSumGetBinding(FilteredBinding binding) : base(binding) { }