Ejemplo n.º 1
0
        public async Task <ActionResult <UserMovieRating> > PostUserMovieRating(UserMovieRating userMovieRating)
        {
            _context.UserMovieRatings.Add(userMovieRating);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetUserMovieRating", new { id = userMovieRating.Id }, userMovieRating));
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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();
            }
        }
Ejemplo n.º 5
0
        private async Task <UserMovieRating> userMovieRatingExists(UserMovieRating userMovieRating)
        {
            var existingUserMovieRating = await _movieDBContext.UserMovieRatings.FirstOrDefaultAsync(e =>
                                                                                                     e.UserId == userMovieRating.UserId &&
                                                                                                     e.MovieId == userMovieRating.MovieId);

            return(existingUserMovieRating);
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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)));
        }
Ejemplo n.º 8
0
        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();
        }