Beispiel #1
0
        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());
            }
        }
Beispiel #3
0
        public double GetMaxSpeed(FilteredBinding binding)
        {
            using (var context = GetMainContext())
            {
                var maxSpeed = context.Trackings.WhereUser(UserId)
                               .WhereTimestampInclusive(binding)
                               .Max(x => x.Speed);

                return(maxSpeed ?? 0);
            }
        }
Beispiel #4
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());
     }
 }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
 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());
     }
 }
Beispiel #7
0
 public ConsumationGetBinding(FilteredBinding binding)
 {
     From = binding.From;
     To   = binding.To;
 }
Beispiel #8
0
 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);
Beispiel #14
0
 public ExpenseGetBinding(FilteredBinding binding)
 {
     From = binding.From;
     To   = binding.To;
 }
 public ExpenseSumGetBinding(FilteredBinding binding) : base(binding) { }