Пример #1
0
        private ExecutedWorkoutFilter BuildExecutedWorkoutFilter(
            int userId,
            DateTime?startDateTime,
            DateTime?endDateTime,
            bool plannedOnly = false)
        {
            var filter = new ExecutedWorkoutFilter();

            filter.UserId      = userId;
            filter.PlannedOnly = plannedOnly;

            if (!plannedOnly) //TODO: Rethink. This is kind of kludgey.
            {
                if (filter.StartDateTime.HasValue)
                {
                    filter.StartDateTime = startDateTime;
                }

                if (filter.EndDateTime.HasValue)
                {
                    filter.EndDateTime = endDateTime;
                }
            }

            return(filter);
        }
Пример #2
0
        public int GetTotalCount(ExecutedWorkoutFilter filter)
        {
            var query = _repo.Get();

            ApplyQueryFilters(ref query, filter);
            return(query.Count());
        }
Пример #3
0
        private void ApplyQueryFilters(ref IQueryable <ExecutedWorkout> query, ExecutedWorkoutFilter filter)
        {
            if (filter == null)
            {
                return;
            }

            query = query.Where(x => x.CreatedByUserId == filter.UserId);

            if (filter.PlannedOnly) //TODO: Rethink. This approach is kind of kludgey. Maybe use a base class instead, and check the type.
            {
                query = query.Where(x => x.StartDateTime == null && x.EndDateTime == null);
            }
            else
            {
                if (filter.StartDateTime.HasValue)
                {
                    query = query.Where(x => x.StartDateTime >= filter.StartDateTime);
                }
                else
                {
                    query = query.Where(x => x.StartDateTime != null);
                }

                if (filter.EndDateTime.HasValue)
                {
                    query = query.Where(x => x.EndDateTime <= filter.EndDateTime);
                }
                else
                {
                    query = query.Where(x => x.EndDateTime != null);
                }
            }
        }
Пример #4
0
        public IEnumerable <ExecutedWorkout> GetFilteredSubset(int firstRecordIndex, short subsetSize, ExecutedWorkoutFilter filter, bool newestFirst)
        {
            IQueryable <ExecutedWorkout> query = _repo.Get();

            if (filter != null)
            {
                ApplyQueryFilters(ref query, filter);
            }

            if (newestFirst)
            {
                query = query.OrderByDescending(x => x.StartDateTime);
            }
            else
            {
                query = query.OrderBy(x => x.StartDateTime);
            }

            var output = query.Skip(firstRecordIndex).Take(subsetSize);

            return(output);
        }