示例#1
0
        public IActionResult GetById([FromQuery] UserResourceParameter userResourceParameter)
        {
            var user = _userService.GetMetaData(userResourceParameter.Email);

            if (user == null)
            {
                return(NotFound());
            }

            return(Ok(user));
        }
示例#2
0
        private object CreateLinksForUsers(UserResourceParameter parameter, bool hasNext, bool hasPrevious)
        {
            var links = new List <LinkDTO>();

            links.Add(new LinkDTO(GenerateUsersResourceUri(parameter, ResourceUriType.Current), "self", "GET"));
            if (hasNext)
            {
                links.Add(new LinkDTO(GenerateUsersResourceUri(parameter, ResourceUriType.nextPage), "next", "GET"));
            }
            if (hasPrevious)
            {
                links.Add(new LinkDTO(GenerateUsersResourceUri(parameter, ResourceUriType.previousPage), "prev", "GET"));
            }
            return(links);
        }
示例#3
0
        private string GenerateUsersResourceUri(UserResourceParameter parameter, ResourceUriType uriType)
        {
            switch (uriType)
            {
            case ResourceUriType.nextPage:
                return(urlHelper.Link("GetUsers", new
                {
                    parameter = new UserResourceParameter
                    {
                        Username = parameter.Username,
                        searchQuery = parameter.searchQuery,
                        Fields = parameter.Fields,
                        PageNumber = parameter.PageNumber + 1,
                        PageSize = parameter.PageSize,
                        OrderBy = parameter.OrderBy,
                    }
                }));

            case ResourceUriType.previousPage:
                return(urlHelper.Link("GetUsers", new
                {
                    parameter = new UserResourceParameter
                    {
                        Username = parameter.Username,
                        searchQuery = parameter.searchQuery,
                        Fields = parameter.Fields,
                        PageNumber = parameter.PageNumber - 1,
                        PageSize = parameter.PageSize,
                        OrderBy = parameter.OrderBy,
                    }
                }));

            default:
            case ResourceUriType.Current:
                return(urlHelper.Link("GetUsers", new
                {
                    parameter = new UserResourceParameter
                    {
                        Username = parameter.Username,
                        searchQuery = parameter.searchQuery,
                        Fields = parameter.Fields,
                        PageNumber = parameter.PageNumber,
                        PageSize = parameter.PageSize,
                        OrderBy = parameter.OrderBy,
                    }
                }));
            }
        }
示例#4
0
        public PageList <User> GetEntities(UserResourceParameter parameter)
        {
            var users = context.Users.AsQueryable <User>();

            if (!string.IsNullOrWhiteSpace(parameter.Username))
            {
                users = users.Where(user => user.Username == parameter.Username.Trim());
            }

            if (!string.IsNullOrWhiteSpace(parameter.searchQuery))
            {
                var searchQuery = parameter.searchQuery.ToLowerInvariant().Trim();
                users = users.Where(user => user.Username.ToLowerInvariant().Contains(searchQuery) || user.Email.ToLowerInvariant().Contains(searchQuery) || user.Name.ToLowerInvariant().Contains(searchQuery));
            }

            users = users.ApplySort <User>(parameter.OrderBy, propertyMappingService.GetPropertyMapping <UserForDisplayDTO, User>());
            return(PageList <User> .Create(users, parameter.PageNumber, parameter.PageSize));
        }
示例#5
0
        public IActionResult GetUsers([FromQuery] UserResourceParameter parameter)
        {
            if (!typeHelperService.TypeHasProperties <UserForDisplayDTO>(parameter.Fields))
            {
                return(BadRequest());
            }

            if (!propertyMappingService.ValidMappingExistsFor <UserForDisplayDTO, User>(parameter.OrderBy))
            {
                return(BadRequest());
            }

            var userList = userRepository.GetEntities(parameter);

            var mappedUserList = AutoMapper.Mapper.Map <IEnumerable <UserForDisplayDTO> >(userList);

            if (!parameter.Fields.Contains("username"))
            {
                parameter.Fields = parameter.Fields + ", username";
            }
            var usersForDisplay = mappedUserList.ShapeData <UserForDisplayDTO>(parameter.Fields);


            var result = usersForDisplay.Select(user =>
            {
                var userAsDictionary = user as IDictionary <string, object>;
                var userLinks        = CreateLinksForUser((string)userAsDictionary["Username"]);

                userAsDictionary.Add("links", userLinks);
                return(userAsDictionary);
            });
            var linksForUsersCollection = CreateLinksForUsers(parameter, userList.HasNext, userList.HasPrevious);
            var resultWithLinks         = new { value = result, links = linksForUsersCollection };

            return(Ok(resultWithLinks));
        }
        public ActionResult <IEnumerable <OrderDto> > GetOrder([FromQuery] UserResourceParameter userResourceParameter)
        {
            var order = orderService.GetOrderByEmail(userResourceParameter.Email);

            return(Ok(mapper.Map <IEnumerable <OrderDto> >(order)));
        }