/// <summary>
        /// Handles movie searches.
        /// </summary>
        /// <param name="stepContext">The step context.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task&lt;DialogTurnResult&gt;.</returns>
        private async Task <DialogTurnResult> HandleMovieSearch(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var userProfile = await Accessors.GetAsync(stepContext.Context, () => new UserProfile(), cancellationToken);

            var client = new TMDbClient(Settings.ApiSettings.MovieDatabaseApiKey);
            var result = await client.SearchMovieAsync(userProfile.MovieDownload.Title, cancellationToken : cancellationToken);

            if (result.TotalResults == 0)
            {
                var noResultsActivity = MessageFactory.Text(Resources.MovieDialog_ImdbSearch_NoResults);

                await stepContext.Context.SendActivityAsync(noResultsActivity, cancellationToken);

                return(await stepContext.ReplaceDialogAsync(TitleWaterFall, cancellationToken : cancellationToken));
            }
            else
            {
                var options = result.Results.Select(resultItem =>
                                                    new AttachmentOption
                {
                    ImageUrl = ActivityHelpers.FormatTmdbPosterPath(resultItem.PosterPath),
                    Value    = resultItem.Id.ToString(),
                    Title    = resultItem.Title
                }).ToList();

                userProfile.MovieDownload.SearchOptions = options;

                var activity = ActivityHelpers.GetCardChoicesFromOptions(Resources.MovieDialog_SelectMovie_Message, options, AttachmentLayoutTypes.Carousel, true);
                return(await stepContext.PromptAsync(TextPromptDialog, new PromptOptions
                {
                    Prompt = activity
                }, cancellationToken));
            }
        }