public async Task <List <Review> > GetReviews(string username) { List <Repository.Models.Review> repoReviews = await _repo.GetUserReviews(username); if (repoReviews == null) { Console.WriteLine("UserLogic.GetReviews() was called for a username that doesn't exist."); return(null); } List <Review> reviews = new List <Review>(); foreach (var repoReview in repoReviews) { reviews.Add(Mapper.RepoReviewToReview(repoReview)); } return(reviews); }
public async Task <List <Review> > GetReviews(string movieid) { var repoReviews = await _repo.GetMovieReviews(movieid); if (repoReviews == null) { Console.WriteLine("MovieLogic.GetReviews() was called for a movie that doesn't exist."); return(null); } var reviews = new List <Review>(); foreach (var repoReview in repoReviews) { reviews.Add(Mapper.RepoReviewToReview(repoReview)); } return(reviews); }
public async Task <List <Review> > GetReviewsPage(string movieid, int page, string sortorder) { if (page < 1) { Console.WriteLine("MovieLogic.GetReviewsPage() was called with a negative or zero page number."); return(null); } Repository.Models.Setting pageSizeSetting = _repo.GetSetting("reviewspagesize"); int pageSize = pageSizeSetting.IntValue ?? default(int); if (pageSize < 1) { Console.WriteLine("MovieLogic.GetReviewsPage() was called but the reviewspagesize is invalid"); return(null); } List <Repository.Models.Review> repoReviews = await _repo.GetMovieReviews(movieid); if (repoReviews == null) { Console.WriteLine("MovieLogic.GetReviewsPage() was called for a movie that doesn't exist."); return(null); } // Sort the list of Reviews switch (sortorder) { case "ratingasc": repoReviews = repoReviews.OrderBy(r => r.Rating).ToList <Repository.Models.Review>(); break; case "ratingdsc": repoReviews = repoReviews.OrderByDescending(r => r.Rating).ToList <Repository.Models.Review>(); break; case "timeasc": repoReviews = repoReviews.OrderBy(r => r.CreationTime).ToList <Repository.Models.Review>(); break; case "timedsc": repoReviews = repoReviews.OrderByDescending(r => r.CreationTime).ToList <Repository.Models.Review>(); break; default: return(null); } int numberOfReviews = repoReviews.Count; int startIndex = pageSize * (page - 1); if (startIndex > numberOfReviews - 1) { Console.WriteLine("MovieLogic.GetReviewsPage() was called for a page number without reviews."); return(null); } int endIndex = startIndex + pageSize - 1; if (endIndex > numberOfReviews - 1) { endIndex = numberOfReviews - 1; } List <Review> reviews = new List <Review>(); for (int i = startIndex; i <= endIndex; i++) { reviews.Add(Mapper.RepoReviewToReview(repoReviews[i])); } return(reviews); }