public int GetTotalCount(ExerciseFilter filter) { var query = _repo.Get(); ApplyQueryFilters(ref query, filter); return(query.Count()); }
public async Task <int> ExercisesCountAsync(ExerciseFilter exerciseFilter) { var queryable = _context.Exercise.AsQueryable(); queryable = FilterExercise(queryable, exerciseFilter); return(await queryable.CountAsync()); }
public IEnumerable <Exercise> Get(int firstRecord, short pageSize, ExerciseFilter filter) { IQueryable <Exercise> query = _repo.Get(); if (filter != null) { ApplyQueryFilters(ref query, filter); } var output = query.Skip(firstRecord).Take(pageSize); return(output); }
private ExerciseFilter BuildExerciseFilter(string nameContains, string hasTargetAreas) { var filter = new ExerciseFilter(); if (!String.IsNullOrWhiteSpace(nameContains)) { filter.NameContains = nameContains; } if (!String.IsNullOrWhiteSpace(hasTargetAreas)) { filter.HasTargetAreas = hasTargetAreas.Split(',').ToList(); } return(filter); }
private void ApplyQueryFilters(ref IQueryable <Exercise> query, ExerciseFilter filter) { if (filter == null) { return; } if (!string.IsNullOrWhiteSpace(filter.NameContains)) { query = query.Where(exercise => EF.Functions.Like(exercise.Name, "%" + filter.NameContains + "%")); } if (filter.HasTargetAreas != null && filter.HasTargetAreas.Any()) { //filter.HasTargetAreas.ForEach((targetArea) => foreach (var targetArea in filter.HasTargetAreas) { query = query.Where(exercise => exercise.ExerciseTargetAreaLinks.Any(links => EF.Functions.Like(links.TargetArea.Name.ToUpper(), targetArea.ToUpper()))); } } }
private IQueryable <Exercise> FilterExercise(IQueryable <Exercise> queryable, ExerciseFilter exerciseFilter) { if (exerciseFilter.GoalId != null && exerciseFilter.GoalId.Length > 0) { return(queryable.Where(x => exerciseFilter.GoalId.Contains(x.GoalId))); } return(queryable); }
public async Task <List <Exercise> > GetAllExercisesAsync(PaginationFilter paginationFilter, ExerciseFilter exerciseFilter) { var queryable = _context.Exercise.AsQueryable(); queryable = FilterExercise(queryable, exerciseFilter); var skip = (paginationFilter.PageNumber - 1) * paginationFilter.PageSize; return(await queryable .Skip(skip).Take(paginationFilter.PageSize) .ToListAsync()); }