Ejemplo n.º 1
0
        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,
            });
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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,
            });
        }