public UsersControllerTests() { _mockUserStore = new Mock <IUserStore <User> >(); _mockUserManager = new Mock <UserManager <User> > (_mockUserStore.Object, null, null, null, null, null, null, null, null); _mockUserManager.Setup(u => u.CreateAsync(It.IsAny <User>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success); _mockUserManager.Setup(u => u.AddToRoleAsync(It.IsAny <User>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success); _mockUserManager.Setup(u => u.ResetPasswordAsync(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success); _mockUserManager.Setup(u => u.ChangePasswordAsync(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Success); _mockUserManager.Setup(u => u.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(new User()); _mockEmailService = new Mock <IEmailService>(); _mockTokenFactory = new Mock <ITokenFactory>(); _mockUserService = new Mock <IUserService>(); _mockUserService.Setup(u => u.Save()).Returns(Task.FromResult(true)); _mockRazorViewRenderer = new Mock <IRazorViewToStringRenderer>(); _controller = new UsersController(_mockUserService.Object, _mockUserManager.Object, _mockTokenFactory.Object, _mockEmailService.Object, _mapper, _mockRazorViewRenderer.Object); SetupTestController(_controller); SetupAuthentication(_controller); _builder = new UserTestBuilder(); resourceParameters = new UsersResourceParameters(); resourceParameters.Fields = "Id, UserName"; }
public IEnumerable <User> GetUsers(UsersResourceParameters usersResourceParameters) { if (usersResourceParameters == null) { throw new ArgumentNullException(nameof(usersResourceParameters)); } if (string.IsNullOrWhiteSpace(usersResourceParameters.Location) && string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { return(GetUsers()); } var collection = _context.Users as IQueryable <User>; if (!string.IsNullOrWhiteSpace(usersResourceParameters.Location)) { var location = usersResourceParameters.Location.Trim(); collection = collection.Where(a => a.Location == location); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { var searchQuery = usersResourceParameters.SearchQuery.Trim(); collection = collection.Where(a => a.Location.Contains(searchQuery) || a.FirstName.Contains(searchQuery) || a.LastName.Contains(searchQuery)); } return(collection.ToList()); }
public IEnumerable <User> GetUsers(UsersResourceParameters usersResourceParameters) { if (usersResourceParameters == null) { throw new ArgumentNullException(nameof(usersResourceParameters)); } if (string.IsNullOrWhiteSpace(usersResourceParameters.MainCategory) && string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { return(GetUsers()); } var collection = _context.Users as IQueryable <User>; if (!string.IsNullOrWhiteSpace(usersResourceParameters.MainCategory)) { usersResourceParameters.MainCategory = usersResourceParameters.MainCategory.Trim(); collection = collection.Where(x => x.MainCategory == usersResourceParameters.MainCategory); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { usersResourceParameters.SearchQuery = usersResourceParameters.SearchQuery.Trim(); collection = collection.Where(x => x.MainCategory.Contains(usersResourceParameters.SearchQuery) || x.FirstName.Contains(usersResourceParameters.SearchQuery) || x.LastName.Contains(usersResourceParameters.SearchQuery)); } return(collection.ToList <User>()); }
public void Given_A_UserRepository_When_I_Call_GetUsers_With_A_MappingDictionary_With_Null_PropertyMappingValues_Then_An_ArgumentNullException_Should_Be_Thrown() { // Arrange var pmd = new Dictionary <string, PropertyMappingValue> { //{"Id", new PropertyMappingValue(new List<string>() {"Id"})}, { "Name", null } }; var pm = new PropertyMapping <UserDto, User>(pmd); _propertyMappingService.AddPropertyMapping <UserDto, User>(pm); var usersResourceParameters = new UsersResourceParameters { SearchQuery = "" }; var options = new DbContextOptionsBuilder <UserContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var context = new UserContext(options); var usersRepository = new UsersRepository(context, _propertyMappingService); // Act var missingKeyMapping = Assert.Throws <System.ArgumentNullException>(() => usersRepository.GetUsers(usersResourceParameters)); // Assert Assert.Equal("Value cannot be null.\r\nParameter name: propertyMappingValue", missingKeyMapping.Message); }
public ActionResult <IEnumerable <UsersDto> > GetUsers([FromQuery] UsersResourceParameters usersResourceParameters) { var objUsers = _usersRepository.GetUsers(usersResourceParameters).Result; //return new JsonResult(objUsers.Result); return(Ok(objUsers)); //This code will take care of Status Codes }
public void Given_An_Object_When_I_Call_ShapeData_With_Empty_MappingDictionary_Then_Exception_Should_Be_Thrown() { // Arrange var user = _fixture.Create <User>(); var user2 = _fixture.Create <User>(); var user3 = _fixture.Create <User>(); var user4 = _fixture.Create <User>(); var usersResourceParameters = new UsersResourceParameters { SearchQuery = "" }; var options = new DbContextOptionsBuilder <UserContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var context = new UserContext(options); context.Add(user); context.Add(user2); context.Add(user3); context.Add(user4); context.SaveChanges(); // Act var missingNullMappingDictionary = Assert.Throws <System.ArgumentNullException>(() => context.Users.AsQueryable().ShapeData(usersResourceParameters.Fields, null)); // Assert Assert.Equal("Value cannot be null.\r\nParameter name: mappingDictionary", missingNullMappingDictionary.Message); }
public IEnumerable <LinkDto> CreateLinksForUsers( UsersResourceParameters usersResourceParameters, bool hasNext, bool hasPrevious) { var links = new List <LinkDto>(); //self links.Add( new LinkDto(CreateUsersResourceUri( usersResourceParameters, ResourceUriType.CurrentPage) , "self", "GET")); if (hasNext) { links.Add( new LinkDto(CreateUsersResourceUri( usersResourceParameters, ResourceUriType.NextPage) , "nextPage", "GET")); } if (hasPrevious) { links.Add( new LinkDto(CreateUsersResourceUri( usersResourceParameters, ResourceUriType.PreviousPage) , "previousPage", "GET")); } return(links); }
public UsersResourceURI(IUrlHelper url, UsersResourceParameters usersResourceParameters, bool hasPreviousPage, bool hasNextPage) { _url = url; _usersResourceParameters = usersResourceParameters; _hasPreviousPage = hasPreviousPage; _hasNextPage = hasNextPage; }
public async Task GetUsersAsync_AllPropertiesNull_ReturnsAllUsers() { // Arrange var options = DatabaseUtilities.GetTestDbConextOptions <CompanyNameProjectNameContext>(); var user1 = new User() { Email = "*****@*****.**", FirstName = "Test1", LastName = "User1" }; var user2 = new User() { Email = "*****@*****.**", FirstName = "Test2", LastName = "User2" }; using (var context = new CompanyNameProjectNameContext(options)) { context.Database.OpenConnection(); context.Database.EnsureCreated(); // Add a user because we need a UserId foreign key for the Users var usersRepository = new UsersRepository(context, MapperUtilities.GetTestMapper()); await usersRepository.CreateAsync(user1); await usersRepository.CreateAsync(user2); } using (var context = new CompanyNameProjectNameContext(options)) { var usersRepository = new UsersRepository(context, MapperUtilities.GetTestMapper()); // Act var parameters = new UsersResourceParameters { Email = null, FirstName = null, LastName = null, SearchQuery = null }; // Get Users with null properties for parameters var results = await usersRepository.GetUsersAsync(parameters); // Assert Assert.AreEqual(results.Count(), 2); Assert.IsTrue(results.FirstOrDefault(x => x.Email == user1.Email) != null); Assert.IsTrue(results.FirstOrDefault(x => x.Email == user2.Email) != null); } }
public void Given_A_Null_Object_When_I_Call_ShapeData_Without_Fields_Then_The_Object_With_All_Original_Fields_Should_Be_Returned() { // Arrange var usersResourceParameters = new UsersResourceParameters { Fields = "Id" }; // Act var shapedUserException = Assert.Throws <System.ArgumentNullException>(() => ((object)null).ShapeData(usersResourceParameters.Fields)); // Assert Assert.Equal("Value cannot be null.\r\nParameter name: source", shapedUserException.Message); }
public async Task <IEnumerable <User> > GetUsersAsync(UsersResourceParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(UsersResourceParameters)); } var userEntities = await Search() .Apply(parameters, Context.Users as IQueryable <UserEntity>) .ToListAsync(); return(Mapper.Map <IEnumerable <User> >(userEntities)); }
public void Given_A_Object_When_I_Call_TypeHasProperties_On_That_Object_With_An_Empty_Field_Then_Returns_True() { // Arrange var usersResourceParameters = new UsersResourceParameters { Fields = "" }; // Act var typeHasProperties = _typeHelperService.TypeHasProperties <User>(usersResourceParameters.Fields); // Assert Assert.True(typeHasProperties); }
public async Task <PagedList <User> > FindUsers(UsersResourceParameters resourceParameters) { var users = await _unitOfWork.Users.GetAll(); if (!string.IsNullOrEmpty(resourceParameters.Search)) { users = await _unitOfWork.Users.GetAll(new UserBySearch(resourceParameters.Search)); } users = users.OrderBy(resourceParameters.OrderBy, PropertyMappingService.UserPropertyMapping); return(PagedList <User> .Create(users.ToList(), resourceParameters.Page, resourceParameters.PageSize)); }
public void Given_An_Object_When_I_Call_ShapeData_Without_Fields_Then_The_Object_With_All_Original_Fields_Should_Be_Returned() { // Arrange var user = _fixture.Create <User>(); var usersResourceParameters = new UsersResourceParameters { Fields = "" }; // Act var shapedUser = user.ShapeData(usersResourceParameters.Fields); // Assert Assert.True(shapedUser.Count() == 3); }
public void Given_Invalid_PropertyMapping_When_GetPropertyMapping_Is_Called_Then_Throws_Exception() { // Arrange var user = _fixture.Create <User>(); var usersResourceParameters = new UsersResourceParameters { Fields = "Invalid Field To Shape An Object By" }; // Act var shapedUserException = Assert.Throws <System.Exception>((() => user.ShapeData(usersResourceParameters.Fields))); // Assert Assert.Equal("Property Invalid Field To Shape An Object By wasn't found on Users.API.Entities.User", shapedUserException.Message); }
public PagedList <User> GetUsers(UsersResourceParameters resourceParameters) { if (resourceParameters is null) { throw new ArgumentNullException(nameof(resourceParameters)); } var collection = _context.Users .OrderBy(u => u.LastName) .ThenBy(u => u.FirstName); return(PagedList <User> .Create(collection, resourceParameters.PageNumber, resourceParameters.PageSize)); }
public void Given_A_UserRepository_When_I_Call_ApplySort_With_An_Empty_MappingDictionary_Then_An_ArgumentNullException_Should_Be_Thrown() { // Arrange var usersResourceParameters = new UsersResourceParameters(); var options = new DbContextOptionsBuilder <UserContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var context = new UserContext(options); // Act var getUsersException = Assert.Throws <System.ArgumentNullException>(() => context.Users.ApplySort(usersResourceParameters.OrderBy, null)); // Assert Assert.Equal("Value cannot be null.\r\nParameter name: mappingDictionary", getUsersException.Message); }
public void Given_An_Object_When_I_Call_GetUsers_With_An_Empty_SearchQuery_Then_The_Object_Should_Be_Returned() { // Arrange var pmd = new Dictionary <string, PropertyMappingValue> { { "Id", new PropertyMappingValue(new List <string>() { "Id" }) }, { "Name", new PropertyMappingValue(new List <string>() { "FirstName", "LastName" }) } }; var pm = new PropertyMapping <UserDto, User>(pmd); _propertyMappingService.AddPropertyMapping <UserDto, User>(pm); var user = _fixture.Create <User>(); var user2 = _fixture.Create <User>(); var user3 = _fixture.Create <User>(); var user4 = _fixture.Create <User>(); var usersResourceParameters = new UsersResourceParameters { SearchQuery = "" }; var options = new DbContextOptionsBuilder <UserContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; var context = new UserContext(options); var usersRepository = new UsersRepository(context, _propertyMappingService); context.Add(user); context.Add(user2); context.Add(user3); context.Add(user4); context.SaveChanges(); // Act var getUsers = usersRepository.GetUsers(usersResourceParameters); // Assert Assert.True(getUsers.Count == 4); }
public PageList <User> GetUsers(UsersResourceParameters usersResourceParameters) { if (usersResourceParameters == null) { throw new ArgumentNullException(nameof(usersResourceParameters)); } var collection = _context.Users as IQueryable <User>; if (!string.IsNullOrWhiteSpace(usersResourceParameters.Email)) { var email = usersResourceParameters.Email.Trim(); collection = collection.Where(user => user.Email == email); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { var searchQuery = usersResourceParameters.SearchQuery.Trim(); collection = collection.Where(user => user.Email.Contains(searchQuery) || user.FirstName.Contains(searchQuery) || user.LastName.Contains(searchQuery)); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { var searchQuery = usersResourceParameters.SearchQuery.Trim(); collection = collection.Where(user => user.Email.Contains(searchQuery) || user.FirstName.Contains(searchQuery) || user.LastName.Contains(searchQuery)); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.OrderBy)) { // get mapping dictionary var userPropertyMappingDictionary = _propertyMappingService.GetPropertyMapping <UserDto, User>(); collection = collection.ApplySort(usersResourceParameters.OrderBy, userPropertyMappingDictionary); } return(PageList <User> .Create(collection, usersResourceParameters.PageNumber, usersResourceParameters.PageSize)); }
private string CreateUsersResourceUri( UsersResourceParameters usersResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber - 1, pageSize = usersResourceParameters.PageSize, emailAddress = usersResourceParameters.EmailAddress, searchQuery = usersResourceParameters.SearchQuery, })); case ResourceUriType.NextPage: case ResourceUriType.CurrentPage: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber, pageSize = usersResourceParameters.PageSize, emailAddress = usersResourceParameters.EmailAddress, searchQuery = usersResourceParameters.SearchQuery, })); default: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber, pageSize = usersResourceParameters.PageSize, emailAddress = usersResourceParameters.EmailAddress, searchQuery = usersResourceParameters.SearchQuery, })); } }
public IActionResult GetUsers([FromQuery] UsersResourceParameters usersResourceParameters) { //Checks weather or not users has a valid property if (!_propertyCheckerService.TypeHasProperties <UserDto>(usersResourceParameters.Fields)) { //If not, returnb bad request return(BadRequest()); } //Get user from repository var usersFromRepo = _userLibraryRepository.GetUsers(usersResourceParameters); #region Paging //Check if there is a preveous page var previousPageLink = usersFromRepo.HasPrevious ? CreateUsersResourceUri(usersResourceParameters, ResourceUriType.PreviousPage) : null; //Check if there is a next page var nextPageLink = usersFromRepo.HasNext ? CreateUsersResourceUri(usersResourceParameters, ResourceUriType.NextPage) : null; //Creating metadata var paginationMetadata = new { totalCount = usersFromRepo.TotalCount, pageSize = usersFromRepo.PageSize, currentPage = usersFromRepo.CurrentPage, totalPages = usersFromRepo.TotalPages, previousPageLink, nextPageLink }; //Adding a custom header for a response Response.Headers.Add("Pagination", JsonSerializer.Serialize(paginationMetadata)); #endregion Paging //Return result using data shaping return(Ok(_mapper.Map <IEnumerable <UserDto> >(usersFromRepo) .ShapeData(usersResourceParameters.Fields))); }
public async Task GetUsersAsync_SearchQueryDoesntExist_ReturnsNull(UsersResourceParameters usersResourceParameters) { // Arrange var options = DatabaseUtilities.GetTestDbConextOptions <CompanyNameProjectNameContext>(); var user1 = new User() { Email = "*****@*****.**", FirstName = "Test1", LastName = "User1" }; var user2 = new User() { Email = "*****@*****.**", FirstName = "Test2", LastName = "User2" }; using (var context = new CompanyNameProjectNameContext(options)) { context.Database.OpenConnection(); context.Database.EnsureCreated(); // Add a user because we need a UserId foreign key for the Users var usersRepository = new UsersRepository(context, MapperUtilities.GetTestMapper()); await usersRepository.CreateAsync(user1); await usersRepository.CreateAsync(user2); } using (var context = new CompanyNameProjectNameContext(options)) { var usersRepository = new UsersRepository(context, MapperUtilities.GetTestMapper()); // Act var results = await usersRepository.GetUsersAsync(usersResourceParameters); // Assert Assert.AreEqual(results.Count(), 0); } }
public void TestInitialize() { _connection = new SqliteConnection("DataSource=:memory:"); _connection.Open(); var options = new DbContextOptionsBuilder <WeblogContext>() .UseSqlite(_connection) .Options; _context = new WeblogContext(options); _context.Database.EnsureCreated(); _repository = new WeblogDataRepository(_context); _resourceParameters = new UsersResourceParameters { PageNumber = 1, PageSize = 10 }; }
private string CreateUsersResourceUri( UsersResourceParameters usersResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_urlHelper.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, searchQuery = usersResourceParameters.SearchQuery, pageNumber = usersResourceParameters.PageNumber - 1, pageSize = usersResourceParameters.PageSize })); case ResourceUriType.NextPage: return(_urlHelper.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, searchQuery = usersResourceParameters.SearchQuery, pageNumber = usersResourceParameters.PageNumber + 1, pageSize = usersResourceParameters.PageSize })); case ResourceUriType.Current: default: return(_urlHelper.Link("GetUsers", new { fields = usersResourceParameters.Fields, orderBy = usersResourceParameters.OrderBy, searchQuery = usersResourceParameters.SearchQuery, pageNumber = usersResourceParameters.PageNumber, pageSize = usersResourceParameters.PageSize })); } }
public async Task <ActionResult> GetUsers([FromQuery] UsersResourceParameters usersResourceParameters) { try { var userPagedList = await _userService.GetAsync(usersResourceParameters); if (userPagedList == null || userPagedList.Any() == false) { return(NotFound("Users not found")); } var usersResourceURI = new UsersResourceURI(Url, usersResourceParameters, userPagedList.HasPrevious, userPagedList.HasNext); var users = userPagedList.Select(user => new UserModel(user)).ShapeData(usersResourceParameters.Fields); var userPaginationMetadata = new UserPaginationMetadata() { TotalCount = userPagedList.TotalCount, PageSize = userPagedList.PageSize, CurrentPage = userPagedList.CurrentPage, TotalPages = userPagedList.TotalPages, PreviousPageLink = usersResourceURI.PreviousPageLink, NextPageLink = usersResourceURI.NextPageLink, OrderBy = usersResourceParameters.OrderBy, Users = users }; return(Ok(userPaginationMetadata)); } catch (ParseException pEx) { return(StatusCode(StatusCodes.Status400BadRequest, pEx.Message)); } catch (ApplicationException apEx) { return(StatusCode(StatusCodes.Status400BadRequest, apEx.Message)); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError, "A server error has occurred")); } }
private string CreateUsersResourceUri( UsersResourceParameters usersResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, pageNumber = usersResourceParameters.PageNumber - 1, pageSize = usersResourceParameters.PageSize, mainCategory = usersResourceParameters.LastName, searchQuery = usersResourceParameters.SearchQuery }));; case ResourceUriType.NextPage: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, pageNumber = usersResourceParameters.PageNumber + 1, pageSize = usersResourceParameters.PageSize, mainCategory = usersResourceParameters.LastName, searchQuery = usersResourceParameters.SearchQuery })); default: return(Url.Link("GetUsers", new { fields = usersResourceParameters.Fields, pageNumber = usersResourceParameters.PageNumber, pageSize = usersResourceParameters.PageSize, mainCategory = usersResourceParameters.LastName, searchQuery = usersResourceParameters.SearchQuery })); } }
private string CreateUsersResourceUri( UsersResourceParameters usersResourceParameters, ResourceUriTypes type) { switch (type) { case ResourceUriTypes.PreviousPage: return(Url.Link("GetUsers", new { orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber - 1, pageSize = usersResourceParameters.PageSize, Email = usersResourceParameters.Email, searchQuery = usersResourceParameters.SearchQuery, })); case ResourceUriTypes.NextPage: return(Url.Link("GetUsers", new { orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber + 1, pageSize = usersResourceParameters.PageSize, Email = usersResourceParameters.Email, searchQuery = usersResourceParameters.SearchQuery, })); default: return(Url.Link("GetUsers", new { orderBy = usersResourceParameters.OrderBy, pageNumber = usersResourceParameters.PageNumber, pageSize = usersResourceParameters.PageSize, Email = usersResourceParameters.Email, searchQuery = usersResourceParameters.SearchQuery, })); } }
//private IList<User> _users; //public UsersRepository() //{ // _users = new List<User>(); //} public PagedList <User> GetUsers( UsersResourceParameters usersResourceParameters) { var collectionBeforePaging = _context.Users.ApplySort(usersResourceParameters.OrderBy, _propertyMappingService.GetPropertyMapping <UserDto, User>()); if (!string.IsNullOrEmpty(usersResourceParameters.SearchQuery)) { // trim & ignore casing var searchQueryForWhereClause = usersResourceParameters.SearchQuery .Trim().ToLowerInvariant(); collectionBeforePaging = collectionBeforePaging .Where(a => a.FirstName.ToLowerInvariant().Contains(searchQueryForWhereClause) || a.LastName.ToLowerInvariant().Contains(searchQueryForWhereClause)); } return(PagedList <User> .Create(collectionBeforePaging, usersResourceParameters.PageNumber, usersResourceParameters.PageSize)); }
public PagedList <User> GetUsers(UsersResourceParameters usersResourceParameters) { if (usersResourceParameters == null) { throw new ArgumentNullException(nameof(usersResourceParameters)); } var users = _context.Users as IQueryable <User>; if (!string.IsNullOrWhiteSpace(usersResourceParameters.LastName)) { var lastName = usersResourceParameters.LastName.Trim().ToLower(); users = _context.Users.Where(u => u.LastName.ToLower() == lastName); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { var searchQuery = usersResourceParameters.SearchQuery.Trim(); users = users.Where(u => u.FirstName.Contains(searchQuery) || u.LastName.Contains(searchQuery)); } return(PagedList <User> .Create(users, usersResourceParameters.PageNumber, usersResourceParameters.PageSize)); }
public async Task <IEnumerable <UsersDto> > GetUsers(UsersResourceParameters usersResourceParameters) { return(await Task.Run(async() => { if (usersResourceParameters == null) { throw new ArgumentNullException(nameof(usersResourceParameters)); } if (string.IsNullOrWhiteSpace(usersResourceParameters.EmailAddress) && string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { return await GetUsers(); } //cast the collection into an IQueriable object var collection = _context.Users as IQueryable <Users>; if (!string.IsNullOrWhiteSpace(usersResourceParameters.EmailAddress)) { var emailAddress = usersResourceParameters.EmailAddress.Trim(); collection = collection.Where(c => c.Email == (emailAddress)); } if (!string.IsNullOrWhiteSpace(usersResourceParameters.SearchQuery)) { var searchQuery = usersResourceParameters.SearchQuery.Trim(); collection = collection.Where(c => c.Email.Contains(searchQuery) || c.Surname.Contains(searchQuery) || c.OtherNames.Contains(searchQuery)); } //var result = await _context.Users.Where(c=>c.Email.Contains(emailAddress)).ToListAsync<Users>(); return _mapper.Map <IEnumerable <UsersDto> >(await collection.ToListAsync()); })); //List<Users> objResutlt = new List<Users>(); }