コード例 #1
0
        public int GetTotalCount(WorkoutFilter filter)
        {
            var query = _repo.Get();

            ApplyQueryFilters(ref query, filter);
            return(query.Count());
        }
コード例 #2
0
        public IEnumerable <Workout> Get(int firstRecord, short pageSize, WorkoutFilter filter)
        {
            IQueryable <Workout> query = _repo.Get();

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

            var output = query.Skip(firstRecord).Take(pageSize);

            return(output);
        }
コード例 #3
0
        private WorkoutFilter BuildWorkoutFilter(int userId, bool activeOnly, string nameContains)
        {
            var filter = new WorkoutFilter();

            filter.UserId     = userId;
            filter.ActiveOnly = activeOnly;

            if (!String.IsNullOrWhiteSpace(nameContains))
            {
                filter.NameContains = nameContains;
            }

            return(filter);
        }
コード例 #4
0
        private static void ApplyQueryFilters(ref IQueryable <Workout> query, WorkoutFilter filter)
        {
            if (filter == null)
            {
                return;
            }

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

            if (filter.ActiveOnly)
            {
                query = query.Where(workout => workout.Active);
            }

            if (!string.IsNullOrWhiteSpace(filter.NameContains))
            {
                query = query.Where(workout => EF.Functions.Like(workout.Name, "%" + filter.NameContains + "%"));
            }
        }