private async Task HandleTvShowSelection(SearchedTvShow searchedTvShow)
        {
            var tvShow = await GetTvShow(searchedTvShow);

            if (!tvShow.Seasons.Any() && tvShow.HasEnded)
            {
                await _userInterface.DisplayTvShowDetailsAsync(tvShow);

                await _userInterface.WarnShowCannotBeRequestedAsync(tvShow);
            }
            else if (tvShow.AllSeasonsFullyRequested())
            {
                if (tvShow.Seasons.OfType <FutureTvSeasons>().Any())
                {
                    await new FutureSeasonsRequestingWorkflow(_user, _searcher, _requester, _userInterface, _tvShowNotificationWorkflow)
                    .RequestAsync(tvShow, tvShow.Seasons.OfType <FutureTvSeasons>().FirstOrDefault());
                }
                else
                {
                    await _userInterface.DisplayTvShowDetailsAsync(tvShow);

                    await _userInterface.WarnShowHasEndedAsync(tvShow);
                }
            }
            else if (!tvShow.IsMultiSeasons() && tvShow.Seasons.OfType <NormalTvSeason>().Any())
            {
                await new NormalTvSeasonRequestingWorkflow(_user, _searcher, _requester, _userInterface, _tvShowNotificationWorkflow)
                .RequestAsync(tvShow, tvShow.Seasons.OfType <NormalTvSeason>().Single());
            }
            else
            {
                await RequestTvShowSeason(tvShow);
            }
        }
Example #2
0
        public async Task RequestAsync(TvShow tvShow, NormalTvSeason selectedSeason)
        {
            await _userInterface.DisplayTvShowDetailsAsync(tvShow);

            if (selectedSeason.IsRequested == RequestedState.Full)
            {
                await RequestNotificationsForSeasonAsync(tvShow, selectedSeason);
            }
            else
            {
                var wasRequested = await _userInterface.GetTvShowRequestConfirmationAsync(selectedSeason);

                if (wasRequested)
                {
                    var result = await _requester.RequestTvShowAsync(_user, tvShow, selectedSeason);

                    if (result.WasDenied)
                    {
                        await _userInterface.DisplayRequestDeniedForSeasonAsync(selectedSeason);
                    }
                    else
                    {
                        await _userInterface.DisplayRequestSuccessForSeasonAsync(selectedSeason);

                        await _tvShowNotificationWorkflow.NotifyForNewRequestAsync(_user.UserId, tvShow, selectedSeason);
                    }
                }
            }
        }
        public async Task RequestAsync(TvShow tvShow, AllTvSeasons selectedSeason)
        {
            await _userInterface.DisplayTvShowDetailsAsync(tvShow);

            var wasRequested = await _userInterface.GetTvShowRequestConfirmationAsync(selectedSeason);

            if (wasRequested)
            {
                var result = await _requester.RequestTvShowAsync(_user, tvShow, selectedSeason);

                if (result.WasDenied)
                {
                    await _userInterface.DisplayRequestDeniedForSeasonAsync(selectedSeason);
                }
                else
                {
                    await _userInterface.DisplayRequestSuccessForSeasonAsync(selectedSeason);

                    foreach (var season in tvShow.Seasons.OfType <NormalTvSeason>().Where(x => !x.IsAvailable))
                    {
                        await _tvShowNotificationWorkflow.NotifyForNewRequestAsync(_user.UserId, tvShow, season);
                    }
                }
            }
        }
Example #4
0
        public async Task HandleRequestAsync(TvShow tvShow, AllTvSeasons selectedSeason)
        {
            await _userInterface.DisplayTvShowDetailsAsync(tvShow);

            var wasRequested = await _userInterface.GetTvShowRequestConfirmation(selectedSeason);

            if (wasRequested)
            {
                await _requester.RequestTvShowAsync(_user.Username, tvShow, selectedSeason);

                foreach (var season in tvShow.Seasons.OfType <NormalTvSeason>().Where(x => !x.IsAvailable))
                {
                    _notificationRequestRepository.AddSeasonNotification(_user.UserId, tvShow.TheTvDbId, season);
                }

                await _userInterface.DisplayRequestSuccessForSeasonAsync(selectedSeason);
            }
        }
        public async Task HandleRequestAsync(TvShow tvShow, NormalTvSeason selectedSeason)
        {
            await _userInterface.DisplayTvShowDetailsAsync(tvShow);

            if (selectedSeason.IsRequested)
            {
                await RequestNotificationsForSeasonAsync(tvShow, selectedSeason);
            }
            else
            {
                var wasRequested = await _userInterface.GetTvShowRequestConfirmation(selectedSeason);

                if (wasRequested)
                {
                    await _requester.RequestTvShowAsync(_user.Username, tvShow, selectedSeason);

                    _notificationRequestRepository.AddSeasonNotification(_user.UserId, tvShow.TheTvDbId, selectedSeason);
                    await _userInterface.DisplayRequestSuccessForSeasonAsync(selectedSeason);
                }
            }
        }
Example #6
0
        public async Task DisplayRequestSuccessForSeasonAsync(TvSeason selectedSeason)
        {
            await _tvShowUserInterface.DisplayTvShowDetailsAsync(_selectedTvShow);

            await _tvShowUserInterface.DisplayRequestSuccessForSeasonAsync(selectedSeason);
        }