public PagedResultList <FeedbackContract> GetFeedbackList(int?start, int?count, FeedbackSortEnumContract sort, SortDirectionEnumContract sortDirection, IList <FeedbackCategoryEnumContract> filterCategories, PortalTypeContract portalTypeContract) { var startValue = PagingHelper.GetStart(start); var countValue = PagingHelper.GetCount(count); var sortValue = m_mapper.Map <FeedbackSortEnum>(sort); var filterCategoryValues = m_mapper.Map <List <FeedbackCategoryEnum> >(filterCategories); var portalType = m_mapper.Map <PortalTypeEnum>(portalTypeContract); var result = m_portalRepository.InvokeUnitOfWork(repository => { var dbFeedbacks = repository.GetFeedbackList(startValue, countValue, sortValue, sortDirection, filterCategoryValues, portalType); var headwordFeedbackIds = dbFeedbacks.List.Where(x => x.FeedbackType == FeedbackType.Headword) .Select(x => x.Id); repository.FetchHeadwordFeedbacks(headwordFeedbackIds); return(dbFeedbacks); }); return(new PagedResultList <FeedbackContract> { List = m_userDetailManager.AddUserDetails(m_mapper.Map <List <FeedbackContract> >(result.List)), TotalCount = result.Count, }); }
public PagedResultList <FeedbackContract> GetFeedbackList(int start, int count, FeedbackSortEnumContract sort, SortDirectionEnumContract sortDirection, IList <FeedbackCategoryEnumContract> filterCategories, PortalTypeContract portalType) { try { var url = UrlQueryBuilder.Create("feedback") .AddParameter("start", start) .AddParameter("count", count) .AddParameter("sort", sort) .AddParameter("sortDirection", sortDirection) .AddParameterList("filterCategories", filterCategories) .AddParameter("portalType", portalType) .ToResult(); var result = m_client.GetPagedList <FeedbackContract>(url); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public ListWithTotalCountResult <Feedback> GetFeedbackList(int start, int count, FeedbackSortEnum sort, SortDirectionEnumContract sortDirection, IList <FeedbackCategoryEnum> filterCategories, PortalTypeEnum portalType) { var query = GetSession().QueryOver <Feedback>() .Fetch(SelectMode.Fetch, x => x.AuthorUser) .Where(x => x.PortalType == portalType); IQueryOverOrderBuilder <Feedback, Feedback> queryOrder; switch (sort) { case FeedbackSortEnum.Date: queryOrder = query.OrderBy(x => x.CreateTime); break; case FeedbackSortEnum.Category: queryOrder = query.OrderBy(x => x.FeedbackCategory); break; default: throw new ArgumentOutOfRangeException(nameof(sort), sort, null); } switch (sortDirection) { case SortDirectionEnumContract.Asc: query = queryOrder.Asc; break; case SortDirectionEnumContract.Desc: query = queryOrder.Desc; break; default: throw new ArgumentOutOfRangeException(nameof(sortDirection), sortDirection, null); } if (sort == FeedbackSortEnum.Category) { query = query.ThenBy(x => x.CreateTime).Desc; } if (filterCategories.Count > 0) { query = query.WhereRestrictionOn(x => x.FeedbackCategory).IsInG(filterCategories); } var list = query.Skip(start) .Take(count) .Future(); var totalCount = query.ToRowCountQuery() .FutureValue <int>(); return(new ListWithTotalCountResult <Feedback> { List = list.ToList(), Count = totalCount.Value, }); }