public async Task <IActionResult> AddMovieFromImdb([FromBody] AddMovieFromImdbInput model)
        {
            try
            {
                var result = await movieLib.AddMovieFromImdbAsync(model, CurrentUserId);

                return(CustomResult(result));
            }
            catch (System.Exception exp)
            {
                return(CustomError(exp));
            }
        }
Example #2
0
        public async Task <string> AddMovieFromImdbAsync(AddMovieFromImdbInput model, long currentUserId)
        {
            var movieEntity = await movieRepo.FirstAsync(x => x.ImdbId == model.ImdbId);

            if (movieEntity != null)
            {
                throw new Exception("Duplicate Movie");
            }

            var url    = $"{_baseUrl}i={model.ImdbId}";
            var result = await GetAsync <ImdbMovieModel>(url);

            var entity = new Data.Entity.Moive.Movie
            {
                Awards         = result.Awards,
                BoxOffice      = result.BoxOffice,
                DvdReleaseDate = result.DVD,
                ImdbId         = result.imdbID,
                ImdbRating     = result.imdbRating,
                ImdbVotes      = result.imdbVotes,
                Metascore      = result.Metascore,
                MovieCasts     = await GetCasts(result.GetCasts()),
                MovieCountries = await GetCountries(result.GetCountries()),
                MovieGenres    = await GetGenres(result.GetGenres()),
                MovieLanguages = await GetLanguages(result.GetLanguages()),
                Plot           = result.Plot,
                Poster         = result.Poster,
                Production     = result.Production,
                Rated          = result.Rated,
                Ratings        = CreateRating(result.GetRatings()),
                Released       = result.Released,
                Runtime        = result.Runtime,
                SeriesId       = result.SeriesId,
                Title          = result.Title,
                TotalSeasons   = result.TotalSeasons,
                Type           = (TypeKind)Enum.Parse(typeof(TypeKind), result.Type),
                UserId         = currentUserId,
                Website        = result.Website,
                Year           = result.Year,
                LocalPath      = model.LocalPath
            };
            var posterCount = entity.Poster.Count();
            var plotCount   = entity.Plot.Count();

            await movieRepo.AddAsync(entity);

            await unitOfWork.CommitAsync();

            return(await BeautifyLocalPathAsync(entity.Id, currentUserId));
        }