Пример #1
0
        private async Task <IActionResult> GetMovie(MovieRequestDTO req)
        {
            try
            {
                var apiResponse = await client.GetMovieAsync(req);

                if (apiResponse.Contains("Movie not found!"))
                {
                    return(NotFound());
                }

                var responseDto = JsonConvert.DeserializeObject <MovieResponseDTO>(apiResponse);

                if (responseDto == null)
                {
                    return(BadRequest("Something went wrong with the request"));
                }

                return(Ok(responseDto));
            }
            catch (System.Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Пример #2
0
 public MovieInfo SaveEditMovieInfo(MovieRequestDTO movie)
 {
     if (movie.MovieId > 0)
     {
         return(UpdateMovieInfo(movie));
     }
     return(SaveMovieInfo(movie));
 }
 public HttpResponseMessage CreateEditMovie(MovieRequestDTO request)
 {
     if (ModelState.IsValid)
     {
         var result = new ResponseContext <MovieResponseDTO>()
         {
             Status = ResponseStatus.Warning
         };
         DeltaMovieBL bussiness = new DeltaMovieBL();
         try
         {
             var response = bussiness.SaveEditMovieInfo(request);
             if (response != null)
             {
                 result.Item = new MovieResponseDTO()
                 {
                     MovieId = response.MovieId,
                     Name    = response.Name
                 };
                 result.Status  = ResponseStatus.Success;
                 result.Message = string.Format("Movie <b>{0}</b> is successfully save/updated.", response.Name).ToSuccessMessage();
             }
         }
         catch (Exception Error)
         {
             return(Request.CreateResponse(HttpStatusCode.OK, new ResponseContext <MovieResponseDTO>()
             {
                 Status = ResponseStatus.Error,
                 Message = Error.Message.ToErrorMessage(),
                 Item = new MovieResponseDTO()
                 {
                 }
             }));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, result));
     }
     else
     {
         string messages = string.Join(string.Empty, ModelState.Values
                                       .SelectMany(x => x.Errors)
                                       .Select(x => string.Format("<p>{0}</p>", x.ErrorMessage)));
         return(Request.CreateResponse(HttpStatusCode.OK, new ResponseContext <MovieResponseDTO>()
         {
             Status = ResponseStatus.Error,
             Message = messages.ToErrorMessage(),
             Item = new MovieResponseDTO()
             {
             }
         }));
     }
 }
Пример #4
0
        private MovieInfo UpdateMovieInfo(MovieRequestDTO movie)
        {
            var movieInfo = dbContext.MovieInfoes.Where(m => m.MovieId == movie.MovieId).FirstOrDefault();

            if (movieInfo != null)
            {
                using (var transaction = dbContext.Database.BeginTransaction())
                {
                    //update movie details.
                    try
                    {
                        movieInfo.Name          = movie.MovieName;
                        movieInfo.Plot          = movie.Plot;
                        movieInfo.Poster        = movie.PosterImage;
                        movieInfo.ProducedBy    = movie.ProducedBy;
                        movieInfo.Status        = true;
                        movieInfo.YearOfRelease = movie.YearOfRelease;
                        movieInfo.ModifiedDate  = DateTime.Now;
                        dbContext.SaveChanges();

                        var mappedActors = dbContext.ActorInMovies.Where(m => m.MovieId == movie.MovieId).ToList();
                        if (mappedActors.IsNotNullOrEmpty())
                        {
                            dbContext.ActorInMovies.RemoveRange(mappedActors);
                            dbContext.SaveChanges();
                        }

                        if (movie.Actors.Length > 0)
                        {
                            var actorinMovie = movie.Actors.Distinct().Select(a => new ActorInMovie()
                            {
                                ActorId = a,
                                MovieId = movieInfo.MovieId
                            }).ToList();
                            dbContext.ActorInMovies.AddRange(actorinMovie);
                            dbContext.SaveChanges();
                        }

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }

                return(movieInfo);
            }
            throw new Exception("No such movie found by your search to update the details.");
        }
Пример #5
0
 private MovieInfo SaveMovieInfo(MovieRequestDTO movie)
 {
     using (var transaction = dbContext.Database.BeginTransaction())
     {
         try
         {
             var movieInfo = new MovieInfo()
             {
                 Name          = movie.MovieName,
                 Plot          = movie.Plot,
                 Poster        = movie.PosterImage,
                 ProducedBy    = movie.ProducedBy,
                 Status        = true,
                 YearOfRelease = movie.YearOfRelease,
                 CreatedDate   = DateTime.Now
             };
             dbContext.MovieInfoes.Add(movieInfo);
             dbContext.SaveChanges();
             if (movieInfo.MovieId > 0)
             {
                 if (movie.Actors.Length > 0)
                 {
                     var actorinMovie = movie.Actors.Distinct().Select(a => new ActorInMovie()
                     {
                         ActorId = a,
                         MovieId = movieInfo.MovieId
                     }).ToList();
                     dbContext.ActorInMovies.AddRange(actorinMovie);
                     dbContext.SaveChanges();
                 }
             }
             transaction.Commit();
             return(movieInfo);
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
     }
 }
Пример #6
0
        public async Task <string> GetMovieAsync(MovieRequestDTO request)
        {
            var queryParams = GetParameters(request);

            if (!queryParams.ContainsKey("apikey"))
            {
                throw new ArgumentException("apikey was not defined");
            }

            var url = QueryHelpers.AddQueryString("http://www.omdbapi.com/", queryParams);

            var respons = await client.GetAsync(url);

            if (respons.IsSuccessStatusCode)
            {
                return(respons.Content.ReadAsStringAsync()?.Result);
            }
            else
            {
                return(string.Empty);
            }
        }
Пример #7
0
        private Dictionary <string, string> GetParameters(MovieRequestDTO re)
        {
            var queryParams = new Dictionary <string, string>();

            queryParams.Add("apikey", options.Value.ApiKey);

            if (!string.IsNullOrEmpty(re.Title))
            {
                queryParams.Add("t", re.Title);
            }

            if (re.Year.HasValue)
            {
                queryParams.Add("y", re.Year.Value.ToString());
            }

            if (re.Plot.HasValue)
            {
                queryParams.Add("plot", re.Plot.Value.ToString());
            }

            return(queryParams);
        }
Пример #8
0
        public MovieInfo SaveEditMovieInfo(MovieRequestDTO movie)
        {
            var result = new MovieInfo();

            using (var unitOfWork = new UnitOfWork())
            {
                if (movie.PosterImage.IsNullOrEmpty())
                {
                    movie.PosterImage = AppSettings.NoImageFilePath;
                }
                else
                {
                    movie.PosterImage = string.Format("{0}/{1}", AppSettings.PosterFilePath.Replace("~", ""), movie.PosterImage.Replace(AppSettings.PosterFilePath.Replace("~", ""), ""));
                }

                var response = unitOfWork.movieRepository.SaveEditMovieInfo(movie);
                if (response != null)
                {
                    result = response;
                }
            }
            return(result);
        }
Пример #9
0
 public async Task <IActionResult> Get([FromQuery] MovieRequestDTO req)
 {
     return(await GetMovie(req));
 }
Пример #10
0
 public Task <string> GetMovieAsync(MovieRequestDTO request)
 {
     throw new ArgumentException();
 }
Пример #11
0
 public Task <string> GetMovieAsync(MovieRequestDTO request)
 {
     return(Task.Run(() => "Movie not found!"));
 }
Пример #12
0
 public Task <string> GetMovieAsync(MovieRequestDTO request)
 {
     return(Task.Run(() => "{\"Title\":\"Titanic\"}"));
 }