public async Task <ActionResult <UserMovieRating> > PostUserMovieRating(UserMovieRating userMovieRating) { _context.UserMovieRatings.Add(userMovieRating); await _context.SaveChangesAsync(); return(CreatedAtAction("GetUserMovieRating", new { id = userMovieRating.Id }, userMovieRating)); }
public async Task SetAsync(string userId, string movieId, int rating) { bool isNewRating = false; UserMovieRating userMovieRating = _dbContext.UserMovieRatings.FirstOrDefault( r => r.UserId == userId && r.MovieId == movieId); if (userMovieRating == null) { isNewRating = true; userMovieRating = new UserMovieRating { Id = Guid.NewGuid().ToString(), MovieId = movieId, UserId = userId }; } userMovieRating.Rating = rating; if (isNewRating) { await _dbContext.UserMovieRatings.AddAsync(userMovieRating); } else { _dbContext.UserMovieRatings.Update(userMovieRating); } await _dbContext.SaveChangesAsync(); }
public async Task <IActionResult> PutUserMovieRating(int id, UserMovieRating userMovieRating) { if (id != userMovieRating.Id) { return(BadRequest()); } _context.Entry(userMovieRating).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserMovieRatingExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task UpdateUserMovieRating(IUserMovieRatingDto userMovieRatingDto) { using (var context = new MovieContext()) { var userMovieRating = context.UserMovieRating.FirstOrDefault(x => x.UserId == userMovieRatingDto.UserId && x.MovieId == userMovieRatingDto.MovieId); if (userMovieRating != null) { userMovieRating.Rating = userMovieRatingDto.Rating; context.UserMovieRating.Attach(userMovieRating); context.Entry(userMovieRating).State = EntityState.Modified; } else { userMovieRating = new UserMovieRating { UserId = userMovieRatingDto.UserId, MovieId = userMovieRatingDto.MovieId, Rating = userMovieRatingDto.Rating }; context.UserMovieRating.Add(userMovieRating); } await context.SaveChangesAsync(); } }
private async Task <UserMovieRating> userMovieRatingExists(UserMovieRating userMovieRating) { var existingUserMovieRating = await _movieDBContext.UserMovieRatings.FirstOrDefaultAsync(e => e.UserId == userMovieRating.UserId && e.MovieId == userMovieRating.MovieId); return(existingUserMovieRating); }
public ActionResult Post(int UserId, [FromBody] UserMovieRating userMovieRating) { if (userMovieRating.Rating < 1 || userMovieRating.Rating > 5) { return(BadRequest("rating should be between 1 and 5")); } userMovieRating.UserId = UserId; _ratedMoviesContext.UserMovieRatings.Add(userMovieRating); _ratedMoviesContext.SaveChanges(); return(Ok()); }
public async Task <IActionResult> RateMovieAsync(int id, string rating) { if (!_context.Movies.Any(m => m.Id == id)) { return(NotFound()); } User user = await _userManager.FindByNameAsync(User.Identity.Name); Movie movie = _context.Movies.Where(movie => id == movie.Id).FirstOrDefault(); user.UserMovieRatings = _context.UserMovieRatings.Where(r => r.UserId == user.Id).ToList(); movie.UserMovieRatings = _context.UserMovieRatings.Where(r => r.MovieId == movie.Id).ToList(); UserMovieRating ratingMovie = new UserMovieRating { UserId = user.Id, User = user, MovieId = id, Movie = movie, Rating = decimal.Parse(rating) }; if (_context.UserMovieRatings.Any(r => r.UserId == ratingMovie.UserId && r.MovieId == ratingMovie.MovieId)) { _context.UserMovieRatings.Remove(_context.UserMovieRatings.FirstOrDefault(r => r.UserId == ratingMovie.UserId && r.MovieId == ratingMovie.MovieId)); user.UserMovieRatings.Remove(user.UserMovieRatings.FirstOrDefault(r => r.UserId == ratingMovie.UserId && r.MovieId == ratingMovie.MovieId)); movie.UserMovieRatings.Remove(movie.UserMovieRatings.FirstOrDefault(r => r.UserId == ratingMovie.UserId && r.MovieId == ratingMovie.MovieId)); } _context.UserMovieRatings.Add(ratingMovie); user.UserMovieRatings ??= new List <UserMovieRating>(); user.UserMovieRatings.Add(ratingMovie); movie.UserMovieRatings ??= new List <UserMovieRating>(); movie.UserMovieRatings.Add(ratingMovie); await _userManager.UpdateAsync(user); _context.SaveChanges(); return(Created("test", user.UserMovieRatings.Select(r => r.Rating))); }
public async Task <int> UserMovieRatingsUpsert(UserMovieRating userMovieRating) { try { UserMovieRating existingUserMovieRating = await userMovieRatingExists(userMovieRating); if (existingUserMovieRating != null) { // Updating existing record with new ratingstars set by user for movie. existingUserMovieRating.RatingStars = userMovieRating.RatingStars; return(await _movieDBContext.SaveChangesAsync()); } else { // Inserting new record for user's movie rating _movieDBContext.UserMovieRatings.Add(userMovieRating); return(await _movieDBContext.SaveChangesAsync()); } } catch (Exception ex) { throw ex; } }
public static void SeedData(MovieServiceDbContext dbContext) { if (dbContext.Movies.Any()) { return; } Random random = new Random(); List <string> genres = new List <string> { "Comedy", "Action", "Thriller", "Drama", "fiction" }; List <string> userIds = new List <string> { "f3b8f0ba-8476-43db-8814-a95af30cebb9", "88116f04-ee0a-40aa-90ca-b54ef5eea075", "c3406ecd-cf96-46b5-a61f-a98ce6b24637", "df6056d0-d0c3-4526-9976-ef9e47e97c0c", "b5c80665-d77d-48df-8847-55246fa54f71" }; List <Movie> movies = new List <Movie>(); List <User> users = new List <User>(); List <UserMovieRating> userMovieRatings = new List <UserMovieRating>(); for (int i = 1; i <= 20; i++) { Movie movie = new Movie { Id = Guid.NewGuid().ToString(), Title = $"Movie {i}", YearOfRelease = 1999 + i, RunningTime = 120 - i, Genres = string.Join(",", genres.Take(random.Next(1, 5))) }; movies.Add(movie); } for (int i = 1; i <= 5; i++) { User user = new User() { Id = userIds[i - 1], FullName = $"User {i}", Email = $"useremail{i}@gmail.com" }; users.Add(user); } for (int i = 1; i <= 100; i++) { string userId = users[random.Next(1, 5)].Id; string movieId = movies[random.Next(1, 20)].Id; int rating = random.Next(1, 5); if (userMovieRatings.Exists(ur => ur.UserId == userId && ur.MovieId == movieId)) { continue; } UserMovieRating userMovieRating = new UserMovieRating { Id = Guid.NewGuid().ToString(), UserId = userId, MovieId = movieId, Rating = rating }; userMovieRatings.Add(userMovieRating); } foreach (Movie movie in movies) { List <UserMovieRating> movieRatings = userMovieRatings.FindAll(x => x.MovieId == movie.Id); if (movieRatings.Count > 0) { movie.AverageRating = movieRatings.Select(x => x.Rating).Average(); } movie.AverageRating = Utility.RoundToNearest(movie.AverageRating); } dbContext.Movies.AddRange(movies); dbContext.Users.AddRange(users); dbContext.UserMovieRatings.AddRange(userMovieRatings); dbContext.SaveChanges(); }