Exemple #1
0
        public int?getReviewPage(int UserId, int PageNumber, int PageSize, ReviewSortState sortState, string titleName)
        {
            if (titleName == null)
            {
                return(null);
            }
            var reviewsList = _mapper.Map <IEnumerable <Review>, IEnumerable <ReviewDTO> >(_reviewsRepository.GetAllReviewsByUserId(UserId));

            reviewsList = sortQuery(reviewsList, sortState);
            var foundElement = reviewsList.FirstOrDefault(s => s.ReviewTitle.Contains(titleName));

            if (foundElement == null)
            {
                return(null);
            }
            int index = reviewsList.IndexOf(foundElement) + 1;

            if (index <= PageSize)
            {
                return(1);
            }
            var remaining = ((double)index / (double)PageSize);

            return((int)Math.Round(remaining, 0, MidpointRounding.AwayFromZero));
        }
Exemple #2
0
 IEnumerable <ReviewDTO> sortQuery(IEnumerable <ReviewDTO> reviewsList, ReviewSortState sortState)
 {
     return(reviewsList = sortState switch
     {
         ReviewSortState.NameDesc => reviewsList.OrderByDescending(s => s.ReviewTitle),
         ReviewSortState.RatingAsc => reviewsList.OrderBy(s => getFilmRating(s)),
         ReviewSortState.RatingDesc => reviewsList.OrderByDescending(s => getFilmRating(s)),
         ReviewSortState.YearAsc => reviewsList.OrderBy(s => s.PublishTime),
         ReviewSortState.YearDesc => reviewsList.OrderByDescending(s => s.PublishTime),
         _ => reviewsList.OrderBy(s => s.ReviewTitle),
     });
Exemple #3
0
        IEnumerable <ReviewDTO> paginateQuery(IEnumerable <ReviewDTO> reviewsList, ReviewSortState sortState, int PageNumber, int PageSize)
        {
            reviewsList = sortQuery(reviewsList, sortState);
            var reviewsListPaged = reviewsList.Skip((PageNumber - 1) * PageSize)
                                   .Take(PageSize);

            if (reviewsListPaged.Count() == 0)
            {
                PageNumber       = 1;
                reviewsListPaged = reviewsList.Skip((PageNumber - 1) * PageSize)
                                   .Take(PageSize);
            }
            return(reviewsListPaged);
        }
Exemple #4
0
        public Entities.Models.IPagedResponse <ReviewDTO> GetReviews(int UserId, int PageNumber, int PageSize, ReviewSortState sortState)
        {
            var reviewsList = _mapper.Map <IEnumerable <Review>, IEnumerable <ReviewDTO> >(_reviewsRepository.GetAllReviewsByUserId(UserId));

            foreach (var item in reviewsList)
            {
                if (item.ContentType == ContentType.Movie)
                {
                    item.FilmImage = _moviesService.GetMovieById(item.FilmId).ImageSource;
                }
                else if (item.ContentType == ContentType.Serial)
                {
                    item.FilmImage = _serialsService.GetSerialById(item.FilmId).PosterImageSource;
                }
            }
            var reviewsListPaged = paginateQuery(reviewsList, sortState, PageNumber, PageSize);

            return(new Entities.Models.IPagedResponse <ReviewDTO>(reviewsListPaged)
            {
                PageSize = PageSize,
                TotalCount = reviewsList.Count(),
                PageNumber = PageNumber,
                Data = reviewsListPaged
            });
        }