public IActionResult GetById([FromQuery] UserResourceParameter userResourceParameter) { var user = _userService.GetMetaData(userResourceParameter.Email); if (user == null) { return(NotFound()); } return(Ok(user)); }
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); }
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, } })); } }
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)); }
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))); }