public IViewComponentResult Invoke() { List <MovieViewModel> allCommunityBasedRecommendation = new List <MovieViewModel>(); IEnumerable <UserLikedMovie> allCommunityLikesFromDb = _repository.GetAllCommunityLikes(); if (allCommunityLikesFromDb.Count() == 0) { return(View(allCommunityBasedRecommendation)); } // transferring to memory because iterating over a lazy loaded query doesn't close the connection List <UserLikedMovie> allCommunityLikesMemory = new List <UserLikedMovie>(); foreach (var entry in allCommunityLikesFromDb) { UserLikedMovie newEntry = new UserLikedMovie { Id = entry.Id, MovieId = entry.MovieId, Score = entry.Score }; allCommunityLikesMemory.Add(newEntry); } foreach (var likedMovie in allCommunityLikesMemory) { Movie tempMovie = _repository.GetMovieByMovieId(likedMovie.MovieId); MovieViewModel tempMovieViewModel = _mapper.Map <Movie, MovieViewModel>(tempMovie); allCommunityBasedRecommendation.Add(tempMovieViewModel); } return(View(allCommunityBasedRecommendation)); }
public async Task AddToCommunityLikes(int movieId) { UserLikedMovie newUserLikedMovie = new UserLikedMovie { MovieId = movieId, Score = 1 }; await _context.CommunityLikes.AddAsync(newUserLikedMovie); await _context.SaveChangesAsync(); }
/// <summary> /// Adds a movie to the Community Likes and if it already exists it increments the score /// </summary> /// <param name="movieId"></param> private void AddMovieToCommunityLikes(int movieId) { UserLikedMovie databaseUserLikedMovie = _repository.GetCommunityLikedMovieById(movieId); if (databaseUserLikedMovie != null) { _repository.IncrementCommunityLikedMovieScore(movieId); } else { _repository.AddToCommunityLikes(movieId); } }
public void GetCommunityLikedMovieById() { var options = new DbContextOptionsBuilder <MoviesContext>() .UseInMemoryDatabase(databaseName: "MRCommLikedById") .Options; addCommunityLikes(options); using (var context = new MoviesContext(options)) { SQLRepository controller = new SQLRepository(context); UserLikedMovie movieScore = controller.GetCommunityLikedMovieById(3); Assert.Equal(4, movieScore.Score); } }
public async Task AddToCommunityLikes() { var options = new DbContextOptionsBuilder <MoviesContext>() .UseInMemoryDatabase(databaseName: "MRAddToLikes") .Options; addCommunityLikes(options); using (var context = new MoviesContext(options)) { SQLRepository controller = new SQLRepository(context); await controller.AddToCommunityLikes(8); UserLikedMovie movieScore = controller.GetCommunityLikedMovieById(8); Assert.Equal(1, movieScore.Score); } }
public UserLikedMovie GetCommunityLikedMovieById(int movieId) { UserLikedMovie movieFromDb = _context.CommunityLikes.Where(m => m.MovieId == movieId).FirstOrDefault(); return(movieFromDb); }