public ModelStateDictionary ValidateReview(Review review)
        {
            ModelStateDictionary errors = new ModelStateDictionary();

            if (review == null)
            {
                return(errors);
            }

            var reviews   = _reviewRepository.GetAll().Where(i => i.GameId == review.GameId && i.UserId == review.UserId && i.Id != review.Id);
            var gamelists = _gameListRepository.GetAll().Where(i => i.GameId == review.GameId && i.UserList.UserId == review.UserId);

            if (!gamelists.Any())
            {
                errors.TryAddModelError("GameId", "Nie możesz napisać recenzji dla gry której nie posiadasz na żadnej ze swoich list.");
            }
            if (reviews.Any())
            {
                errors.TryAddModelError("GameId", "Napisałeś już recenzję dla tej gry.");
            }
            if (review.Content == null)
            {
                errors.TryAddModelError("Content", "Treść recenzji musi mieć między 10 a 5000 znaków.");
            }
            else if (review.Content.Length < 10 && 5000 < review.Content.Length)
            {
                errors.TryAddModelError("Content", "Treść recenzji musi mieć między 10 a 5000 znaków.");
            }
            if (review.GameplayScore < 1 || review.GameplayScore > 10)
            {
                errors.TryAddModelError("GameplayScore", "Ocena grywalności musi mieć wartość od 1 do 10.");
            }
            if (review.GraphicsScore < 1 || review.GraphicsScore > 10)
            {
                errors.TryAddModelError("GraphicsScore", "Ocena grafiki musi mieć wartość od 1 do 10.");
            }
            if (review.MusicScore < 1 || review.MusicScore > 10)
            {
                errors.TryAddModelError("MusicScore", "Ocena muzyki musi mieć wartość od 1 do 10.");
            }
            if (review.StoryScore < 1 || review.StoryScore > 10)
            {
                errors.TryAddModelError("StoryScore", "Ocena fabuły musi mieć wartość od 1 do 10.");
            }

            var game = _gameRepository.Find(review.GameId);

            if (game != null && game.Status.AllowReviews == false)
            {
                errors.TryAddModelError("", "Status tej gry nie pozwala na napisanie recenzji");
            }
            return(errors);
        }
示例#2
0
        public List <GameScore> GetUserUnorderedGamesRanking(int?userid, IQueryable <Game> games)
        {
            if (!userid.HasValue)
            {
                return(GetUnorderedGamesRanking(games));
            }
            if (userid < 1)
            {
                return(GetUnorderedGamesRanking(games));
            }

            var usergamelists = _gameListRepository.GetAll().Where(s => s.UserList.UserId == userid);
            var ranking       = GetUnorderedGamesRanking(games);

            foreach (var item in ranking)
            {
                var gamelist = usergamelists.FirstOrDefault(s => s.GameId == item.Game.Id);
                if (gamelist != null)
                {
                    item.UserScore = gamelist.PersonalScore;
                }
            }
            return(ranking);
        }
示例#3
0
        public List <CompanyPopularity> GetPopularCompanies(int?number)
        {
            var companies = _gameListRepository.GetAll()
                            .GroupBy(g => g.Game.DeveloperCompany)
                            .Select(g => new CompanyPopularity {
                Company = g.Key, Popularity = g.Count()
            })
                            .AsEnumerable()
                            .OrderByDescending(o => o.Popularity);

            if (number.HasValue)
            {
                return(companies.Take(number.Value).ToList());
            }
            return(companies.ToList());
        }
 public IEnumerable <GameList> GetAll()
 {
     return(_gameListRepository.GetAll().ToList());
 }