/// <summary>
 /// Creates an extended movie result model from an external extended movie result.
 /// </summary>
 /// <param name="source">The source.</param>
 /// <returns>Extended movie result model</returns>
 public ExtendedMovieResultModel Create(ExtendedMovieResult source)
 {
     return(new ExtendedMovieResultModel
     {
         Collection = Create(source.Collection),
         HomePage = source.HomePage,
         Id = source.Id,
         ImdbId = source.ImdbId,
         Overview = source.Overview,
         ReleaseDate = source.ReleaseDate.GetValueOrDefault().ToShortDateString(),
         ReleaseYear = source.ReleaseDate.GetValueOrDefault().Year,
         Runtime = source.Runtime.ToString() + " minutes",
         Status = source.Status,
         Tagline = source.Tagline,
         Title = source.Title,
         Budget = "$" + source.Budget.ToString("N2"),
         Profit = "$" + (source.Revenue - source.Budget).ToString("N2"),
         Revenue = "$" + source.Revenue.ToString("N2"),
         BackdropImageUrl = FormalizeImagePath(source.BackdropPath, ImageTypes.Backdrop, ImageSizes.Medium),
         PosterImageUrl = FormalizeImagePath(source.PosterPath, ImageTypes.Poster, ImageSizes.Small),
         PosterImageUrlOriginal = FormalizeImagePath(source.PosterPath, ImageTypes.Poster, ImageSizes.Original),
         Genres = source.Genres.Select(x => Create(x)).ToList(),
         ProductionCompanies = source.ProductionCompanies.Select(x => Create(x)).ToList(),
         Directors = source.Credits.Crew.Where(x => _directorJobNames.Contains(x.Job)).Select(x => Create(x)).ToList(),
         Producers = source.Credits.Crew.Where(x => _producerJobNames.Contains(x.Job)).Select(x => Create(x)).ToList(),
         Writers = source.Credits.Crew.Where(x => x.Department == "Writing").Select(x => Create(x)).ToList(),
         TopBilledCast = source.Credits.Cast.OrderBy(x => x.Order).Take(6).Select(x => Create(x)).ToList()
     });
 }
 /// <summary>
 /// Creates a full credit result model from an external extended movie result.
 /// </summary>
 /// <param name="source">The source.</param>
 /// <returns>Full credit result model</returns>
 public FullCreditsResultModel CreateCredits(ExtendedMovieResult source)
 {
     return(new FullCreditsResultModel
     {
         Overview = source.Overview,
         Tagline = source.Tagline,
         Title = source.Title,
         BackdropImageUrl = FormalizeImagePath(source.BackdropPath, ImageTypes.Backdrop, ImageSizes.Medium),
         PosterImageUrl = FormalizeImagePath(source.PosterPath, ImageTypes.Poster, ImageSizes.Small),
         PosterImageUrlOriginal = FormalizeImagePath(source.PosterPath, ImageTypes.Poster, ImageSizes.Original),
         Genres = source.Genres.Select(x => Create(x)).ToList(),
         Cast = source.Credits.Cast.OrderBy(x => x.Order).Select(x => Create(x, ImageSizes.Smallest)),
         Crew = source.Credits.Crew.GroupBy(x => x.Department).Select(x => Create(x)),
         Departments = source.Credits.Crew.Select(x => x.Department).Distinct().OrderBy(x => x)
     });
 }
 /// <summary>
 /// Creates an import movie result model from an extended movie result.
 /// </summary>
 /// <param name="source">The source.</param>
 /// <returns>Import movie result model</returns>
 public ImportMovieResultModel CreateImport(ExtendedMovieResult source)
 {
     return(new ImportMovieResultModel
     {
         Budget = source.Budget,
         HomePage = source.HomePage,
         Id = source.Id,
         ImdbId = source.ImdbId,
         Overview = source.Overview,
         ReleaseDate = source.ReleaseDate.GetValueOrDefault().ToShortDateString(),
         Revenue = source.Revenue,
         Runtime = source.Runtime,
         Tagline = source.Tagline,
         Title = source.Title,
         BackdropImageUrl = FormalizeImagePath(source.BackdropPath, ImageTypes.Backdrop, ImageSizes.Smallest),
         PosterImageUrl = FormalizeImagePath(source.PosterPath, ImageTypes.Poster, ImageSizes.Small),
         Genres = source.Genres.Select(x => Create(x)).ToList()
     });
 }