コード例 #1
0
        public async Task <Review> CreateReview(ReviewCreate creationModel)
        {
            Review review;
            Movie  movie = await _dbContext.Movies
                           .FirstOrDefaultAsync(m => m.Title.ToLower() == creationModel.Movie.Title.ToLower() &&
                                                m.ReleaseYear == creationModel.Movie.ReleaseYear);

            Reviewer reviewer = await _dbContext.Reviewers
                                .FirstOrDefaultAsync(r => r.Username == creationModel.ReviewerName);

            // Create review model for an existing movie
            if (movie != null)
            {
                review = new Review
                {
                    Title      = creationModel.Title,
                    MovieId    = movie.Id,
                    Body       = creationModel.Body,
                    Rating     = creationModel.Rating,
                    SubmitTime = creationModel.SubmitTime,
                    ReviewerId = reviewer.Id
                };

                // If movie exists, update it's AverageRating
                await UpdateAverageRating(movie.Id, creationModel.Rating);
            }
            // Create Review model for a new movie
            else
            {
                review = new Review
                {
                    Title = creationModel.Title,
                    Movie = new Movie
                    {
                        Title         = creationModel.Movie.Title,
                        Author        = creationModel.Movie.Author,
                        AverageRating = creationModel.Rating,
                        ImagePath     = await _posterData.GetMoviePoster(creationModel.Movie.ReleaseYear,
                                                                         creationModel.Movie.Title),
                        ReleaseYear = creationModel.Movie.ReleaseYear
                    },
                    Body       = creationModel.Body,
                    Rating     = creationModel.Rating,
                    SubmitTime = creationModel.SubmitTime,
                    ReviewerId = reviewer.Id
                };
            }

            await _dbContext.AddAsync(review);

            reviewer.NumberOfReviewsSubmitted++;
            _dbContext.Reviewers.Update(reviewer);
            await _dbContext.SaveChangesAsync();

            return(review);
        }
コード例 #2
0
        public async Task <Movie> CreateMovie(MovieCreate createModel)
        {
            Movie movie = new Movie
            {
                Title         = createModel.Title,
                Author        = createModel.Author,
                ReleaseYear   = createModel.ReleaseYear,
                ImagePath     = await _posterData.GetMoviePoster(createModel.ReleaseYear, createModel.Title),
                AverageRating = 0
            };

            await _dbContext.Movies.AddAsync(movie);

            await _dbContext.SaveChangesAsync();

            return(movie);
        }