public async Task <GridViewModel <UsersViewModel> > ReadAsync(int currentPage, int rows, string searchQuery) { GridViewModel <UsersViewModel> vm = new GridViewModel <UsersViewModel>(); try { int maxRows = rows == 0 ? 10 : rows; currentPage = currentPage == 0 ? 1 : currentPage; IQueryable <Brownbag.Data.Models.User> query = _context.Users; if (searchQuery != null) { query = query.Where( e => e.UserFullName.CaseInsensitiveContains(searchQuery) ); // Returns the search query to help maintain state vm.SearchQuery = searchQuery; } double pageCount = (double)((decimal)query.Count() / Convert.ToDecimal(maxRows)); vm.PageCount = (int)Math.Ceiling(pageCount); query = query .OrderBy(item => item.UserName).Skip((currentPage - 1) * maxRows) .Take(maxRows); var mapped = _mapper.Map <UsersViewModel[]>(query); vm.Data = mapped; foreach (UsersViewModel user in vm.Data) { var currentUser = await _userManager.FindByIdAsync(user.Id); foreach (var claim in await _userManager.GetRolesAsync(currentUser)) { var item = new StringOptionsLookupViewModel(); item.value = claim; item.label = claim; item.disabled = false; user.Roles.Add(item); } } vm.Page = currentPage; vm.Rows = maxRows; return(vm); } catch (Exception ex) { vm.Errors = ex.ToString(); return(vm); } }
public async Task <UsersViewModel> EditAsync([FromRoute] Guid id) { /* * We are NOT using automapper here even because we can just return the entity because * it has no has virtual or irrelevant properties which should not be sent for no reason. * If you look at OccupationalSpecialtyController it does the opposite */ var user = _mapper.Map <UsersViewModel>(_context.Users.Where(y => y.Id.Equals(id)).FirstOrDefault()); var currentUser = await _userManager.FindByIdAsync(id.ToString()); foreach (var role in await _userManager.GetRolesAsync(currentUser)) { var item = new StringOptionsLookupViewModel(); item.value = role; item.label = role; item.disabled = false; user.Roles.Add(item); } return(user); }