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); }
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); }
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)); }
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)); }