Ejemplo n.º 1
0
        public async Task <ListViewModel <GroupViewModel> > GetGroupsByFilterAsync(string name, int?skipCount, int?takeCount, bool isOrderByDescending)
        {
            Expression <Func <Group, bool> > predicate = null;

            if (!string.IsNullOrEmpty(name))
            {
                predicate = x => x.Name.ToLower().Contains(name.Trim().ToLower());
            }
            var groupsCount = await _repository.CountAsync(predicate);

            var groupsList = await _repository.ListAsync(predicate : predicate,
                                                         orderBy : x => x.Name,
                                                         isOrderByDescending : isOrderByDescending,
                                                         skipCount : skipCount,
                                                         takeCount : takeCount,
                                                         (gr) => gr.StudentGroups);

            var groupViewList = groupsList.Select(x => new GroupViewModel(x.Id, x.Name, x.StudentGroups.Count));

            return(new ListViewModel <GroupViewModel>(skipCount, takeCount, groupsCount, groupViewList));
        }