예제 #1
0
        public async Task <PagedList <Opinion> > GetPagedOpinions(OpinionPaginationParams opinionPaginationParams)
        {
            var opinions = await GetWhere <Opinion>(o => o.ReportsCount > 0);

            if (opinionPaginationParams.ShowNotVisible)
            {
                opinions = opinions.Where(o => (o.IsVisible.HasValue && !o.IsVisible.Value) || o.ReportsCount > 0);
            }

            if (!opinionPaginationParams.OrderByDescending)
            {
                opinions = opinions.OrderBy(o => o.ReportsCount);
            }

            if (!string.IsNullOrEmpty(opinionPaginationParams.UserName))
            {
                opinions = opinions.Where(o => o.User.UserName.ToLower().Contains(opinionPaginationParams.UserName.ToLower()));
            }

            if (!string.IsNullOrEmpty(opinionPaginationParams.Content))
            {
                opinions = opinions.Where(o => o.Content.ToLower().Contains(opinionPaginationParams.Content.ToLower()));
            }

            opinions = opinions.OrderByDescending(o => o.ReportsCount);

            return(PagedList <Opinion> .Create(opinions.AsQueryable(), opinionPaginationParams.PageNumber, opinionPaginationParams.PageSize));
        }
예제 #2
0
        public async Task <IActionResult> GetOpinions([FromQuery] OpinionPaginationParams opinionPaginationParams)
        {
            var opinions = await database.AdminRepository.GetPagedOpinions(opinionPaginationParams);

            var opinionsToReturn = mapper.Map <ICollection <OpinionDetailsDto> >(opinions);

            Response.AddPagination(opinions.CurrentPage, opinions.PageSize, opinions.TotalCount, opinions.TotalPages);

            return(Ok(opinionsToReturn));
        }