public DetailsModel(WebDetailsService Service)
 {
     _service     = Service;
     Movie        = new Movie();
     MovieDetails = new MovieDetails();
     TVDetails    = new TVShowDetails();
 }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Movie = await _service.GetAsync(id);

            if (Movie == null || Movie?.TMDB_ID <= 0)
            {
                return(NotFound());
            }

            if (Movie.MovieOrTVShow == MovieOrTVShow.Movie)
            {
                MovieDetails = await _service.GetMovieDetailsAsync(Movie.TMDB_ID);

                if (MovieDetails != null)
                {
                    PosterURL = "https://image.tmdb.org/t/p/w185" + MovieDetails.poster_path;
                    Overview  = MovieDetails.overview;
                    Tagline   = MovieDetails.tagline;
                    Runtime   = MovieDetails.runtime;
                }
            }
            else if (Movie.MovieOrTVShow == MovieOrTVShow.TV)
            {
                TVDetails = await _service.GetTVSHowDetailsAsync(Movie.TMDB_ID);

                if (TVDetails == null)
                {
                    return(Page());
                }

                Overview  = TVDetails.overview;
                PosterURL = "https://image.tmdb.org/t/p/w185" + TVDetails.poster_path;

                foreach (var season in TVDetails.seasons)
                {
                    if (season.season_number == Movie.Season)
                    {
                        if (!string.IsNullOrEmpty(season.poster_path))
                        {
                            PosterURL = "https://image.tmdb.org/t/p/w185" + season.poster_path;
                        }
                        if (!string.IsNullOrEmpty(season.overview))
                        {
                            Overview = season.overview;
                        }
                        break;
                    }
                }

                Tagline = string.Empty;

                SeasonCount = TVDetails.number_of_seasons;

                if (TVDetails.episode_run_time?.Count() > 0)
                {
                    Runtime = TVDetails.episode_run_time.ToList().FirstOrDefault();
                }
            }

            return(Page());
        }
        public virtual async Task <Movie> ImportTVShowAsync(int TMDB_ID)
        {
            var Movie = new Movie();

            if (TMDB_ID <= 0)
            {
                return(Movie);
            }


            TVShowDetails TVShowDetails = await _TMDBapi.FetchTVShowDetailsAsync(TMDB_ID);

            if (TVShowDetails == null)
            {
                return(Movie);
            }



            Movie.TMDB_ID = TVShowDetails.id;
            Movie.Title   = TVShowDetails.name;

            Movie.Genres = new List <Genre>();

            TVShowDetails?.genres.ToList()
            .ForEach(genre => Movie.Genres.Add(new Genre(genre.id)));



            if (Movie.TMDB_ID <= 0)
            {
                return(Movie);
            }


            Movie.IMDB_ID = string.Empty;
            Movie.Year    = Convert.ToDateTime(TVShowDetails.first_air_date).Year;

            if (TVShowDetails.seasons?.Count() > 0 && Movie.Season != 0)
            {
                foreach (var season in TVShowDetails.seasons)
                {
                    if (season.season_number == Movie.Season)
                    {
                        //overwrite the year if was have a value from the seasons collection
                        Movie.Year = Convert.ToDateTime(season.air_date).Year;
                        break;
                    }
                }
            }

            foreach (var rating in TVShowDetails.content_ratings?.results)
            {
                if (rating.iso_3166_1 == "US")
                {
                    Movie.Rating = Movie.RatingFromString(rating.rating);
                    break;
                }
            }

            return(Movie);
        }