public IActionResult Index(string imdbIdParam) { if (string.IsNullOrEmpty(imdbIdParam)) { return(View(null)); } var moviesInstance = new MoviesManager(); IMovieFullInfo movie = moviesInstance.GetMovieInfo(imdbIdParam); string imdbUrl = HelperMethods.GetAppConfigValue("imdbUrl"); ViewBag.ImDbUrl = imdbUrl += movie.ImdbID; return(View(movie)); }
/// <summary> /// Gets the movie full information. /// </summary> /// <param name="imdbId">The imdb identifier.</param> public IMovieFullInfo GetMovie(string imdbId) { // validate if (string.IsNullOrEmpty(imdbId)) { throw new ApiException(400, $"Missing required parameter {nameof(imdbId)}"); } if (string.IsNullOrEmpty(apiKey)) { throw new ApiException(400, $"Missing required parameter {nameof(apiKey)}"); } var path = ""; var queryParams = new Dictionary <string, string>(); var headerParams = new Dictionary <string, string>(); var formParams = new Dictionary <string, string>(); queryParams.Add("i", imdbId); queryParams.Add("r", "json"); queryParams.Add("apikey", apiKey); // make the HTTP request IRestResponse response = (IRestResponse)apiClient.CallApi(path, Method.GET, queryParams, headerParams, formParams, null); if (((int)response.StatusCode) > 400) { throw new ApiException((int)response.StatusCode, "Error calling OMDB API: " + response.Content, response.Content); } else if (response.StatusCode == 0) { throw new ApiException((int)response.StatusCode, "Error calling OMDB API: " + response.ErrorMessage, response.ErrorMessage); } // deserialize IMovieFullInfo result = JsonConvert.DeserializeObject <SingleMovieResponse>(response.Content, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }); return(result); }
/// <summary> /// Gets the movie information. /// </summary> /// <param name="imbdId">The imbd identifier.</param> public IMovieFullInfo GetMovieInfo(string imbdId) { var dbInstance = new DbManager(); IMovieFullInfo movieFromDb = dbInstance.GetMovieByImdbId(imbdId); // gets movie info from db if (movieFromDb != null) { return(movieFromDb); } // gets movie info from api var service = new MovieBoxApiService(); IMovieFullInfo movieFromApi = service.GetMovie(imbdId); if (movieFromApi != null) { dbInstance.AddMovie(movieFromApi); } return(movieFromApi); }
/// <summary> /// Adds the movie. /// </summary> /// <param name="movieFromApi">The movie from API.</param> public void AddMovie(IMovieFullInfo movieFromApi) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); string sql = $@" INSERT INTO Movies ( imdb_id, title ,year ,rated ,released ,runtime ,genre ,director ,writer ,actors ,plot ,language ,country ,awards ,poster ,metascore ,imdb_rating ,imdb_votes ,type ,dvd_release_date ,boxoffice ,production,website ,response ) VALUES ( @ImdbID ,@Title ,'{movieFromApi.Year}' ,'{movieFromApi.Rated}' ,@Released ,'{movieFromApi.Runtime}' ,'{movieFromApi.Genre}' ,@Director ,@Writer ,@Actors ,@Plot ,'{movieFromApi.Language}' ,@Country ,'{movieFromApi.Awards}' ,'{movieFromApi.Poster}' ,{movieFromApi.Metascore} ,{movieFromApi.ImdbRating} ,{movieFromApi.ImdbVotes} ,'{movieFromApi.Type}' ,@ReleaseDateDvd ,'{movieFromApi.BoxOffice}' ,'{movieFromApi.Production}' ,'{movieFromApi.Website}' ,@Response); SELECT SCOPE_IDENTITY();"; var command = new SqlCommand(sql, connection); command.Parameters.Add("@ImdbID", SqlDbType.VarChar, 50).Value = movieFromApi.ImdbID; command.Parameters.Add("@Director", SqlDbType.VarChar, 150).Value = movieFromApi.Director; command.Parameters.Add("@Writer", SqlDbType.VarChar, 350).Value = movieFromApi.Writer; command.Parameters.Add("@Title", SqlDbType.VarChar, 150).Value = movieFromApi.Title; command.Parameters.Add("@Actors", SqlDbType.VarChar, 350).Value = movieFromApi.Actors; command.Parameters.Add("@Plot", SqlDbType.VarChar, 250).Value = movieFromApi.Plot; command.Parameters.Add("@Country", SqlDbType.VarChar, 100).Value = movieFromApi.Country; command.Parameters.AddWithValue("@Released", movieFromApi.Released); command.Parameters.AddWithValue("@ReleaseDateDvd", movieFromApi.ReleaseDateDvd); command.Parameters.AddWithValue("@Response", movieFromApi.Response); object objId = command.ExecuteScalar(); // add records to related Ratings table if (objId != null) { int movieId = Convert.ToInt32(objId); foreach (IRating rating in movieFromApi.Ratings) { sql = $@" INSERT INTO Ratings ( source ,value ,movie_id) VALUES ( '{rating.Source}' ,'{rating.Value}' ,{movieId} )"; var commandRating = new SqlCommand(sql, connection); commandRating.ExecuteNonQuery(); } } } }