public async Task <IActionResult> GetUsersWithRoles(ForTableModel model) { var propInfo = GetPropertyInfo(model.SortColumn); var nn = User.Identity.Name; var usersList = _userManager.Users.Where(u => u.UserName != User.Identity.Name); if (model.SearchTerm != null) { usersList = usersList.Where(u => u.UserName.Contains(model.SearchTerm)); } switch (model.SortDirection) { case "asc": usersList = propInfo != null? usersList.OrderBy(u => propInfo.GetValue(u)) : usersList.OrderBy(u => u.Id); break; case "desc": usersList = propInfo != null? usersList.OrderByDescending(u => propInfo.GetValue(u)) : usersList.OrderByDescending(u => u.Id); break; default: usersList = propInfo == null ? usersList : usersList.OrderBy(u => propInfo.GetValue(u)); break; } var users = await usersList .Skip((model.Page - 1) *model.PageSize) .Take(model.PageSize) .ToListAsync(); var total = await usersList.CountAsync(); List <UserViewModel> userDTOs = new List <UserViewModel>(); IList <string> roles; foreach (var item in users) { roles = await _userManager.GetRolesAsync(item); userDTOs.Add(new UserViewModel { Id = item.Id, UserName = item.UserName, Roles = roles }); } return(Ok(new { entities = userDTOs, total })); }
public async Task <IActionResult> Get(ForTableModel model) { if (!(await _context.Books.AnyAsync() && await _context.Authors.AnyAsync())) { return(Ok(new { entities = new List <BookViewModel>(), total = 0 })); } var propInfo = GetPropertyInfo(model.SortColumn); var bookList = User.IsInRole("Moderator") || User.IsInRole("Admin") ? _context.Books : _context.Books.Where(b => b.IsVisibleInCatalog); if (model.SearchTerm != null) { bookList = bookList .Where(b => b.Name.ToLower().Contains(model.SearchTerm) || b.Author.Name.ToLower().Contains(model.SearchTerm)); } switch (model.SortDirection) { case "asc": bookList = propInfo != null? bookList.OrderBy(b => propInfo.GetValue(b)) : bookList.OrderBy(b => b.Id); break; case "desc": bookList = propInfo != null? bookList.OrderByDescending(b => propInfo.GetValue(b)) : bookList.OrderByDescending(b => b.Id); break; default: bookList = propInfo == null ? bookList : bookList.OrderBy(b => propInfo.GetValue(b)); break; } var books = await bookList .Include(b => b.Author) .Skip((model.Page - 1) * model.PageSize) .Take(model.PageSize) .ToListAsync(); var total = await bookList.CountAsync(); List <BookForAdminViewModel> bookViews = new List <BookForAdminViewModel>(); foreach (var item in books) { bookViews.Add(_mapper.Map <BookForAdminViewModel>(item)); } return(Ok(new { entities = bookViews, total })); }