private void AddPlayerProfile(PlayerProfileDTO item, URN competitorId, CultureInfo culture, bool useSemaphore)
 {
     if (item == null)
     {
         return;
     }
     if (_cache.Contains(item.Id.ToString()))
     {
         try
         {
             var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString());
             if (useSemaphore)
             {
                 _semaphoreCacheMerge.Wait();
             }
             ci?.Merge(item, competitorId, culture);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError($"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex);
         }
         finally
         {
             if (useSemaphore && !_isDisposed)
             {
                 _semaphoreCacheMerge.Release();
             }
         }
     }
     else
     {
         _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id));
     }
 }
 private void AddPlayerProfile(ExportablePlayerProfileCI item)
 {
     if (_cache.Contains(item.Id))
     {
         try
         {
             var ci = (PlayerProfileCI)_cache.Get(item.Id);
             _semaphoreCacheMerge.Wait();
             ci?.Import(item);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError($"Error importing player profile for id={item.Id}.", ex);
         }
         finally
         {
             if (!_isDisposed)
             {
                 _semaphoreCacheMerge.Release();
             }
         }
     }
     else
     {
         _cache.Add(item.Id, new PlayerProfileCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
     }
 }
Exemple #3
0
 private void AddCompetitor(ExportableCompetitorCI item)
 {
     if (_cache.Contains(item.Id))
     {
         var itemId = URN.Parse(item.Id);
         try
         {
             var ci = (CompetitorCI)_cache.Get(item.Id);
             WaitTillIdIsAvailable(_mergeUrns, itemId);
             ci?.Import(item);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError(ex, $"Error importing competitor for id={item.Id}.");
         }
         finally
         {
             if (!_isDisposed)
             {
                 ReleaseId(_mergeUrns, itemId);
             }
         }
     }
     else
     {
         if (!string.IsNullOrEmpty(item.Id))
         {
             _cache.Add(item.Id, new CompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
         }
     }
 }
 private void AddCompetitorProfile(URN id, SimpleTeamProfileDTO item, CultureInfo culture, bool useSemaphore)
 {
     if (_cache.Contains(id.ToString()))
     {
         try
         {
             var ci = (CompetitorCI)_cache.Get(id.ToString());
             if (useSemaphore)
             {
                 _semaphoreCacheMerge.Wait();
             }
             ci?.Merge(item, culture);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError($"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex);
         }
         finally
         {
             if (useSemaphore && !_isDisposed)
             {
                 _semaphoreCacheMerge.Release();
             }
         }
     }
     else
     {
         _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));
     }
 }
        /// <summary>
        /// Asynchronously gets a <see cref="ITeamCompetitor" /> representing away competitor of the match associated with the current instance
        /// </summary>
        /// <returns>A <see cref="Task{ITeamCompetitor}"/> representing the retrieval operation</returns>
        public async Task <ITeamCompetitor> GetAwayCompetitorAsync()
        {
            var matchCI = (IMatchCI)SportEventCache.GetEventCacheItem(Id);

            if (matchCI == null)
            {
                ExecutionLog.LogDebug($"Missing data. No match cache item for id={Id}.");
                return(null);
            }
            var items = ExceptionStrategy == ExceptionHandlingStrategy.THROW
                ? await matchCI.GetCompetitorsAsync(Cultures).ConfigureAwait(false)
                : await new Func <IEnumerable <CultureInfo>, Task <IEnumerable <URN> > >(matchCI.GetCompetitorsAsync).SafeInvokeAsync(Cultures, ExecutionLog, GetFetchErrorMessage("Competitors")).ConfigureAwait(false);

            if (items == null)
            {
                return(null);
            }

            var competitorUrns = items.ToList();

            if (competitorUrns.Count == 2)
            {
                return(await _sportEntityFactory.BuildTeamCompetitorAsync(competitorUrns[1], Cultures, matchCI).ConfigureAwait(false));
            }

            ExecutionLog.LogError($"Received {competitorUrns.Count} competitors for match[Id = {Id}]. Match can have only 2 competitors.");
            throw new InvalidOperationException($"Invalid number of competitors. Match must have exactly 2 competitors, received {competitorUrns.Count}");
        }
Exemple #6
0
 private void AddPlayerProfile(ExportablePlayerProfileCI item)
 {
     if (_cache.Contains(item.Id))
     {
         var itemId = URN.Parse(item.Id);
         try
         {
             var ci = (PlayerProfileCI)_cache.Get(item.Id);
             WaitTillIdIsAvailable(_mergeUrns, itemId);
             ci?.Import(item);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError(ex, $"Error importing player profile for id={item.Id}.");
         }
         finally
         {
             if (!_isDisposed)
             {
                 ReleaseId(_mergeUrns, itemId);
             }
         }
     }
     else
     {
         _cache.Add(item.Id, new PlayerProfileCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
     }
 }
 private async Task AddPlayerProfileAsync(PlayerProfileDTO item, URN competitorId, CultureInfo culture, bool useSemaphore)
 {
     if (item == null)
     {
         return;
     }
     if (_cache.Contains(item.Id.ToString()))
     {
         try
         {
             var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString());
             if (useSemaphore)
             {
                 await WaitTillIdIsAvailableAsync(_mergeUrns, item.Id).ConfigureAwait(false);
             }
             ci?.Merge(item, competitorId, culture);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError(ex, $"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.");
         }
         finally
         {
             if (useSemaphore && !_isDisposed)
             {
                 await ReleaseIdAsync(_mergeUrns, item.Id).ConfigureAwait(false);
             }
         }
     }
     else
     {
         _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id));
     }
 }
Exemple #8
0
        private void AddPlayerCompetitor(PlayerCompetitorDTO item, URN competitorId, CultureInfo culture, bool useSemaphore)
        {
            if (item == null)
            {
                return;
            }
            if (_cache.Contains(item.Id.ToString()))
            {
                try
                {
                    if (item.Id.Type.Equals(SdkInfo.PlayerProfileIdentifier, StringComparison.InvariantCultureIgnoreCase))
                    {
                        var ci = (PlayerProfileCI)_cache.Get(item.Id.ToString());
                        if (useSemaphore)
                        {
                            WaitTillIdIsAvailable(_mergeUrns, item.Id);
                        }

                        ci?.Merge(item, competitorId, culture);
                    }
                    else
                    {
                        var ci = (CompetitorCI)_cache.Get(item.Id.ToString());
                        if (useSemaphore)
                        {
                            WaitTillIdIsAvailable(_mergeUrns, item.Id);
                        }

                        ci?.Merge(item, culture);
                    }
                }
                catch (Exception ex)
                {
                    ExecutionLog.LogError(ex, $"Error adding player profile for id={item.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.");
                }
                finally
                {
                    if (useSemaphore && !_isDisposed)
                    {
                        ReleaseId(_mergeUrns, item.Id);
                    }
                }
            }
            else
            {
                if (item.Id.Type.Equals(SdkInfo.PlayerProfileIdentifier, StringComparison.InvariantCultureIgnoreCase))
                {
                    _cache.Add(item.Id.ToString(), new PlayerProfileCI(item, competitorId, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id));
                }
                else
                {
                    _cache.Add(item.Id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(item.Id));
                }
            }
        }
        private void AddTeamCompetitor(URN id, TeamCompetitorDTO item, CultureInfo culture, bool useSemaphore)
        {
            if (_cache.Contains(id.ToString()))
            {
                try
                {
                    var ci     = (CompetitorCI)_cache.Get(id.ToString());
                    var teamCI = ci as TeamCompetitorCI;
                    if (teamCI != null)
                    {
                        if (useSemaphore)
                        {
                            _semaphoreCacheMerge.Wait();
                        }
                        teamCI.Merge(item, culture);
                    }
                    else
                    {
                        if (useSemaphore)
                        {
                            _semaphoreCacheMerge.Wait();
                        }
                        teamCI = new TeamCompetitorCI(ci);
                        teamCI.Merge(item, culture);
                        _cache.Set(id.ToString(), teamCI, GetCorrectCacheItemPolicy(id));
                    }
                }
                catch (Exception ex)
                {
                    ExecutionLog.LogError($"Error adding team competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex);
                }
                finally
                {
                    if (useSemaphore)
                    {
                        if (!_isDisposed)
                        {
                            _semaphoreCacheMerge.Release();
                        }
                    }
                }
            }
            else
            {
                _cache.Add(id.ToString(), new TeamCompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));
            }

            if (item?.Players != null && item.Players.Any())
            {
                foreach (var player in item.Players)
                {
                    AddPlayerCompetitor(player, item.Id, culture, false);
                }
            }
        }
        private async Task AddTeamCompetitorAsync(URN id, TeamCompetitorDTO item, CultureInfo culture, bool useSemaphore)
        {
            if (_cache.Contains(id.ToString()))
            {
                try
                {
                    var ci     = (CompetitorCI)_cache.Get(id.ToString());
                    var teamCI = ci == null ? (TeamCompetitorCI)_cache.Get(id.ToString()) : ci as TeamCompetitorCI;
                    if (teamCI != null)
                    {
                        if (useSemaphore)
                        {
                            await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false);
                        }
                        teamCI.Merge(item, culture);
                    }
                    else
                    {
                        if (useSemaphore)
                        {
                            await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false);
                        }
                        teamCI = new TeamCompetitorCI(ci);
                        teamCI.Merge(item, culture);
                        _cache.Set(id.ToString(), teamCI, GetCorrectCacheItemPolicy(id));
                    }
                }
                catch (Exception ex)
                {
                    ExecutionLog.LogError(ex, $"Error adding team competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.");
                }
                finally
                {
                    if (useSemaphore && !_isDisposed)
                    {
                        await ReleaseIdAsync(_mergeUrns, id).ConfigureAwait(false);
                    }
                }
            }
            else
            {
                var teamCompetitor = new TeamCompetitorCI(item, culture, _dataRouterManager);
                _cache.Add(id.ToString(), teamCompetitor, GetCorrectCacheItemPolicy(id));
            }

            if (item?.Players != null && item.Players.Any())
            {
                var tasks = item.Players.Select(s => AddPlayerCompetitorAsync(s, item.Id, culture, false));
                await Task.WhenAll(tasks).ConfigureAwait(false);
            }
        }
Exemple #11
0
        private void AddCompetitorProfile(URN id, CompetitorProfileDTO item, CultureInfo culture, bool useSemaphore)
        {
            if (_cache.Contains(id.ToString()))
            {
                try
                {
                    var ci = (CompetitorCI)_cache.Get(id.ToString());
                    if (useSemaphore)
                    {
                        WaitTillIdIsAvailable(_mergeUrns, id);
                    }
                    ci?.Merge(item, culture);
                }
                catch (Exception ex)
                {
                    ExecutionLog.LogError(ex, $"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.");
                }
                finally
                {
                    if (useSemaphore && !_isDisposed)
                    {
                        ReleaseId(_mergeUrns, id);
                    }
                }

                if (item?.Players != null && item.Players.Any())
                {
                    foreach (var player in item.Players)
                    {
                        AddPlayerProfile(player, id, culture, false);
                    }
                }
            }
            else
            {
                _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));

                if (item.Players != null && item.Players.Any())
                {
                    foreach (var player in item.Players)
                    {
                        AddPlayerProfile(player, id, culture, false);
                    }
                }
            }
        }
        private async Task AddTeamCompetitorAsync(ExportableTeamCompetitorCI item)
        {
            if (_cache.Contains(item.Id))
            {
                var itemId = URN.Parse(item.Id);
                try
                {
                    var ci     = (CompetitorCI)_cache.Get(item.Id);
                    var teamCI = ci == null ? (TeamCompetitorCI)_cache.Get(item.Id) : ci as TeamCompetitorCI;
                    if (teamCI != null)
                    {
                        await WaitTillIdIsAvailableAsync(_mergeUrns, itemId).ConfigureAwait(false);

                        teamCI.Import(item);
                    }
                    else
                    {
                        await WaitTillIdIsAvailableAsync(_mergeUrns, itemId).ConfigureAwait(false);

                        teamCI = new TeamCompetitorCI(ci);
                        teamCI.Import(item);
                        _cache.Set(item.Id, teamCI, GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
                    }
                }
                catch (Exception ex)
                {
                    ExecutionLog.LogError(ex, $"Error importing team competitor for id={item.Id}.");
                }
                finally
                {
                    if (!_isDisposed)
                    {
                        await ReleaseIdAsync(_mergeUrns, itemId).ConfigureAwait(false);
                    }
                }
            }
            else
            {
                _cache.Add(item.Id, new TeamCompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
            }
        }
 private void AddTeamCompetitor(ExportableTeamCompetitorCI item)
 {
     if (_cache.Contains(item.Id))
     {
         try
         {
             var ci     = (CompetitorCI)_cache.Get(item.Id);
             var teamCI = ci as TeamCompetitorCI;
             if (teamCI != null)
             {
                 _semaphoreCacheMerge.Wait();
                 teamCI.Import(item);
             }
             else
             {
                 _semaphoreCacheMerge.Wait();
                 teamCI = new TeamCompetitorCI(ci);
                 teamCI.Import(item);
                 _cache.Set(item.Id, teamCI, GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
             }
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError($"Error importing team competitor for id={item.Id}.", ex);
         }
         finally
         {
             if (!_isDisposed)
             {
                 _semaphoreCacheMerge.Release();
             }
         }
     }
     else
     {
         _cache.Add(item.Id, new TeamCompetitorCI(item, _dataRouterManager), GetCorrectCacheItemPolicy(URN.Parse(item.Id)));
     }
 }