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);
        }
Exemple #5
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
 public UsersResourceURI(IUrlHelper url,
                         UsersResourceParameters usersResourceParameters,
                         bool hasPreviousPage,
                         bool hasNextPage)
 {
     _url = url;
     _usersResourceParameters = usersResourceParameters;
     _hasPreviousPage         = hasPreviousPage;
     _hasNextPage             = hasNextPage;
 }
Exemple #9
0
        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);
        }
Exemple #13
0
        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);
        }
Exemple #19
0
        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));
        }
Exemple #20
0
        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)));
        }
Exemple #22
0
        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);
            }
        }
Exemple #23
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,
                }));
            }
        }
Exemple #28
0
        //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));
        }
Exemple #29
0
        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));
        }
Exemple #30
0
        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>();
        }