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))));
 }
示例#2
0
        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));
        }