public BaseResponse <PagingResponse <VotingItemResponse> > SearchVotingItem( [FromQuery] VotingItemSearchParameter parameter, [FromHeader] Guid UserID) { return(BaseResponse <PagingResponse <VotingItemResponse> > .ConstructResponse( HttpStatusCode.OK, HttpStatusCode.OK.ToString(), constructPagingResponse(votingItemService.SearchVotingItem(parameter, UserID)))); }
public PagedList <VotingItemResponse> SearchVotingItem(VotingItemSearchParameter searchParameter, Guid UserID) { Users user = dbContext.Users.Find(UserID); if (user == null) { throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.USER_NOT_EXIST.ToString()); } var votingItems = dbContext.VotingItems.Where(vi => vi.CreatorUserId.Equals(UserID)); if (!String.IsNullOrEmpty(searchParameter.Name)) { votingItems = votingItems.Where(vi => vi.Name.Contains(searchParameter.Name)); } if (searchParameter.Categories != null && searchParameter.Categories.Count > 0) { List <VotingCategories> votingCategories = dbContext.VotingCategories .Where(vc => vc.CreatorUserId.Equals(UserID) && searchParameter.Categories.Contains(vc.CategoryId)) .ToList(); List <Guid> searchVotingCategories = constructListVotingItemID(votingCategories); votingItems = votingItems.Where(vi => searchVotingCategories.Contains(vi.VotingItemId)); } List <VotingItems> result = votingItems.ToList(); List <VotingItemResponse> responses = new List <VotingItemResponse>(); foreach (VotingItems votingItem in result) { List <VotingCategories> votingCategories = dbContext.VotingCategories .Where(vc => vc.VotingItemId.Equals(votingItem.VotingItemId)) .ToList(); List <Guid> listCategories = constructListCategoryID(votingCategories); List <Categories> categories = dbContext.Categories.Where(cat => listCategories.Contains(cat.CategoryId)).ToList(); responses.Add(constructResponse(votingItem, categories)); } return(PagedList <VotingItemResponse> .ToPagedList(responses, searchParameter.Page, searchParameter.Size)); }