Exemple #1
0
        private async Task HandleTvShowSelection(SearchedTvShow searchedTvShow)
        {
            var tvShow = await GetTvShow(searchedTvShow);

            if (tvShow.AllSeasonsAlreadyRequested())
            {
                if (tvShow.Seasons.OfType <FutureTvSeasons>().Any())
                {
                    await new FutureSeasonsRequestingWorkflow(_user, _searcher, _requester, _userInterface, _notificationRequestRepository)
                    .HandleRequestAsync(tvShow, tvShow.Seasons.OfType <FutureTvSeasons>().FirstOrDefault());
                }
                else
                {
                    await _userInterface.DisplayTvShowDetailsAsync(tvShow);

                    await _userInterface.WarnShowHasEnded(tvShow);
                }
            }
            else if (!tvShow.IsMultiSeasons() && tvShow.Seasons.OfType <NormalTvSeason>().Any())
            {
                await new NormalTvSeasonRequestingWorkflow(_user, _searcher, _requester, _userInterface, _notificationRequestRepository)
                .HandleRequestAsync(tvShow, tvShow.Seasons.OfType <NormalTvSeason>().Single());
            }
            else
            {
                await RequestTvShowSeason(tvShow);
            }
        }
Exemple #2
0
        private async Task <TvShow> GetTvShow(SearchedTvShow searchedTvShow)
        {
            var tvShow = await _searcher.GetTvShowDetailsAsync(searchedTvShow);

            if (tvShow.IsMultiSeasons())
            {
                tvShow.Seasons = tvShow.Seasons.Prepend(new AllTvSeasons
                {
                    SeasonNumber = 0,
                    IsAvailable  = false,
                    IsRequested  = false,
                }).ToArray();
            }

            if (!tvShow.HasEnded)
            {
                tvShow.Seasons = tvShow.Seasons.Append(new FutureTvSeasons
                {
                    SeasonNumber = tvShow.Seasons.Max(x => x.SeasonNumber) + 1,
                    IsAvailable  = false,
                    IsRequested  = tvShow.IsRequested,
                }).ToArray();
            }

            return(tvShow);
        }