コード例 #1
0
        public async Task <MovieDTO> GetOne(MovieDTO movie, UserDTO user)
        {
            var queryDictionary = new Dictionary <string, string>();

            queryDictionary.Add("i", movie.ImdbId);
            queryDictionary.Add("apiKey", "2f3362ff");
            var queryString = queryDictionary.ToQueryString();

            var endpoint = OmdbEndpoints.GET_ONE_MOVIE.DescriptionAttr() + queryString;

            var ombdResult = await ApiRequest.Make(uri, endpoint);

            var movieResult = ombdResult.OmdbResultToMovieDTO();

            var movieRating = _context.Ratings.FirstOrDefault(_ => _.Movie.ImdbId == movie.ImdbId && _.User.Id == user.Id);

            if (movieRating != null)
            {
                movieResult.UserRating = RatingDTO.Populate(movieRating);
            }
            else
            {
                movieResult.UserRating = new RatingDTO
                {
                    Score = DB.Score.UNRATED
                };
            }

            return(movieResult);
        }
コード例 #2
0
        public async Task <List <MovieDTO> > Search(OmdbSearchRequestDTO searchRequest)
        {
            var queryDictionary = new Dictionary <string, string>();

            queryDictionary.Add("s", searchRequest.SearchQuery);
            queryDictionary.Add("apiKey", "2f3362ff");
            var queryString = queryDictionary.ToQueryString();

            var endpoint    = OmdbEndpoints.SEARCH_MOVIES.DescriptionAttr() + queryString;
            var ombdResults = await ApiRequest.Make(uri, endpoint);

            var movieResults   = ombdResults.OmdbResultToApiResult();
            var movieResultIds = movieResults.Select(_ => _.ImdbId);

            var ratings      = _context.Ratings;
            var movieRatings = new List <Rating>();

            if (ratings.Any())
            {
                movieRatings = _context.Ratings.Where(_ => movieResultIds.Any(mrid => mrid == _.Movie.ImdbId)).ToList();
            }

            if (movieRatings.Any())
            {
                movieResults.Select(_ => {
                    var rating   = movieRatings.FirstOrDefault(mr => mr.Movie.ImdbId == _.ImdbId);
                    _.UserRating = RatingDTO.Populate(rating);
                    return(_);
                });
            }

            return(movieResults);
        }
コード例 #3
0
        public async Task <RatingDTO> Update(RatingDTO rating, UserDTO user)
        {
            var updateRating = _context.Ratings.FirstOrDefault(_ => _.Id == rating.Id);

            updateRating.Score = rating.Score;

            _context.Ratings.Update(updateRating);
            await _context.SaveChangesAsync();

            return(RatingDTO.Populate(updateRating));
        }
コード例 #4
0
        public async Task <RatingDTO> Insert(RatingDTO rating, UserDTO user)
        {
            var ratedMovie = _context.Movies.FirstOrDefault(_ => _.ImdbId == rating.Movie.ImdbId);
            var ratingUser = _context.Users.FirstOrDefault(_ => _.Name == user.Name);

            if (ratedMovie == null)
            {
                ratedMovie = new Movie
                {
                    ImdbId    = rating.Movie.ImdbId,
                    PosterUrl = rating.Movie.PosterUrl,
                    Release   = rating.Movie.Release,
                    Title     = rating.Movie.Title
                };
                _context.Movies.Add(ratedMovie);
                await _context.SaveChangesAsync();
            }

            if (ratingUser == null)
            {
                ratingUser = new User
                {
                    Name = user.Name
                };
                _context.Users.Add(ratingUser);
                await _context.SaveChangesAsync();
            }

            var newRating = new Rating
            {
                Movie = ratedMovie,
                Score = rating.Score,
                User  = ratingUser
            };

            _context.Ratings.Add(newRating);
            await _context.SaveChangesAsync();

            return(RatingDTO.Populate(newRating));
        }