public async Task <SearchUserViewModel> GetUsersAsync(SearchUserFormModel searchUserForm) { var queryable = _context.Users.AsQueryable(); if (!string.IsNullOrEmpty(searchUserForm.FirstName)) { queryable = queryable.Where(q => q.FirstName.Contains(searchUserForm.FirstName)); } if (!string.IsNullOrEmpty(searchUserForm.LastName)) { queryable = queryable.Where(q => q.LastName.Contains(searchUserForm.LastName)); } if (!string.IsNullOrEmpty(searchUserForm.Username)) { queryable = queryable.Where(q => q.Username.Contains(searchUserForm.Username)); } if (searchUserForm.IsActive.HasValue) { queryable = queryable.Where(q => q.IsActive == searchUserForm.IsActive.Value); } if (searchUserForm.SortModel != null) { switch (searchUserForm.SortModel.Col + "|" + searchUserForm.SortModel.Sort) { case "firstname|asc": queryable = queryable.OrderBy(x => x.FirstName); break; case "firstname|desc": queryable = queryable.OrderByDescending(x => x.FirstName); break; case "lastname|asc": queryable = queryable.OrderBy(x => x.LastName); break; case "lastname|desc": queryable = queryable.OrderByDescending(x => x.LastName); break; case "username|asc": queryable = queryable.OrderBy(x => x.Username); break; case "username|desc": queryable = queryable.OrderByDescending(x => x.Username); break; default: queryable = queryable.OrderBy(x => x.CreationDate); break; } } else { queryable = queryable.OrderBy(x => x.CreationDate); } var resp = await queryable.Skip((searchUserForm.PageIndex - 1) *searchUserForm.PageSize).Take(searchUserForm.PageSize).ToListAsync(); var count = await queryable.CountAsync(); var searchViewModel = new SearchUserViewModel(); searchViewModel.searchUserViewModel = resp.Select(respUser => new UserViewModel() { Id = respUser.Id, FirstName = respUser.FirstName, LastName = respUser.LastName, Username = respUser.Username, Description = respUser.Description, Location = respUser.Location, PhoneNumber = respUser.PhoneNumber, IsActive = respUser.IsActive, IsPresident = respUser.IsPresident, GroupAuthId = respUser.GroupAuthId, OrganizationId = respUser.OrganizationId, UserConfigurationId = respUser.UserConfigurationId, LastLockoutDate = respUser.LastLockoutDate, LastPasswordChangedDate = respUser.LastPasswordChangedDate, CreationDate = respUser.CreationDate, LastVisit = respUser.LastVisit, LastLoggedIn = respUser.LastLoggedIn, }).ToList(); searchViewModel.PageIndex = searchUserForm.PageIndex; searchViewModel.PageSize = searchUserForm.PageSize; searchViewModel.TotalCount = count; return(searchViewModel); }
public async Task <IActionResult> GetUsers([FromBody] SearchUserFormModel searchUserForm) { return(Ok(GetRequestResult(await _usersService.GetUsersAsync(searchUserForm)))); }