/// <summary>
        /// Get schedule as an asynchronous operation
        /// </summary>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}" /> specifying the languages to which the returned instance should be translated</param>
        /// <returns>A <see cref="Task{TResult}" /> representing an async operation</returns>
        public async Task <IEnumerable <URN> > GetScheduleAsync(IEnumerable <CultureInfo> cultures)
        {
            var missingCultures = LanguageHelper.GetMissingCultures(cultures, _loadedSchedules).ToList();

            if (_scheduleUrns == null && missingCultures.Any())
            {
                var tasks = missingCultures.Select(s => DataRouterManager.GetSportEventsForTournamentAsync(Id, s, this)).ToList();
                await Task.WhenAll(tasks).ConfigureAwait(false);

                if (tasks.All(a => a.IsCompleted))
                {
                    _loadedSchedules.AddRange(missingCultures);
                    if (tasks.First().Result != null)
                    {
                        _scheduleUrns = tasks.First().Result.Select(s => s.Item1);
                    }
                }
            }

            if (_scheduleUrns.IsNullOrEmpty() && _currentSeasonInfo != null)
            {
                _scheduleUrns = _currentSeasonInfo.Schedule;
            }

            return(_scheduleUrns);
        }
Exemplo n.º 2
0
        /// <summary>
        /// get stages as an asynchronous operation.
        /// </summary>
        /// <param name="cultures">The cultures</param>
        /// <returns>A <see cref="Task{T}" /> representing the asynchronous operation</returns>
        public async Task <IEnumerable <URN> > GetStagesAsync(IEnumerable <CultureInfo> cultures)
        {
            if (_childStages != null)
            {
                return(_childStages);
            }
            await FetchMissingSummary(new[] { DefaultCulture }, false).ConfigureAwait(false);

            if (_childStages == null && !_stageScheduleFetched)
            {
                try
                {
                    _stageScheduleFetched = true;
                    var results = await DataRouterManager.GetSportEventsForTournamentAsync(Id, DefaultCulture, this).ConfigureAwait(false);

                    if (!results.IsNullOrEmpty())
                    {
                        _childStages = new ReadOnlyCollection <URN>(results.Select(r => r.Item1).ToList());
                    }
                }
                catch
                {
                }
            }

            return(_childStages);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the associated event timeline
        /// </summary>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}" /> specifying the languages to which the returned instance should be translated</param>
        /// <returns>A <see cref="Task{T}" /> representing an async operation</returns>
        /// <exception cref="System.NotImplementedException"></exception>
        /// <remarks>The timeline is cached only after the event status indicates that the event has finished</remarks>
        public async Task<EventTimelineCI> GetEventTimelineAsync(IEnumerable<CultureInfo> cultures)
        {
            var wantedCultures = cultures as IList<CultureInfo> ?? cultures.ToList();
            if (_eventTimeline == null || !_eventTimeline.IsFinalized)
            {
                // if we dont have timeline or is not yet finalized, all cultures should be fetched; otherwise only missing ones
            }
            else
            {
                wantedCultures = LanguageHelper.GetMissingCultures(wantedCultures, _eventTimeline.FetchedCultureInfos).ToList();
            }

            var tasks = wantedCultures.Select(s => DataRouterManager.GetInformationAboutOngoingEventAsync(Id, s, this));
            await Task.WhenAll(tasks).ConfigureAwait(false);
            return _eventTimeline;
        }
        /// <summary>
        /// Get seasons as an asynchronous operation
        /// </summary>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}" /> specifying the languages to which the returned instance should be translated</param>
        /// <returns>A <see cref="Task{TResult}" /> representing an async operation</returns>
        public async Task <IEnumerable <URN> > GetSeasonsAsync(IEnumerable <CultureInfo> cultures)
        {
            var missingCultures = LanguageHelper.GetMissingCultures(cultures, _loadedSeasons).ToList();

            if (_seasons == null && missingCultures.Any())
            {
                var tasks = missingCultures.Select(s => DataRouterManager.GetSeasonsForTournamentAsync(Id, s, this)).ToList();
                await Task.WhenAll(tasks).ConfigureAwait(false);

                if (tasks.All(a => a.IsCompleted))
                {
                    _loadedSeasons.AddRange(missingCultures);
                    _seasons = tasks.First().Result;
                }
            }
            return(_seasons);
        }