Beispiel #1
0
        /// <summary>
        /// Merges the information from the provided <see cref="CompetitorDTO"/> into the current instance
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO"/> containing information about the competitor</param>
        /// <param name="culture">A <see cref="CultureInfo"/> specifying the language of the passed <code>dto</code></param>
        internal void Merge(CompetitorDTO competitor, CultureInfo culture)
        {
            Guard.Argument(competitor, nameof(competitor)).NotNull();

            _isVirtual              = competitor.IsVirtual;
            Names[culture]          = competitor.Name;
            _countryNames[culture]  = competitor.CountryName;
            _abbreviations[culture] = string.IsNullOrEmpty(competitor.Abbreviation)
                ? SdkInfo.GetAbbreviationFromName(competitor.Name)
                : competitor.Abbreviation;
            _referenceId = UpdateReferenceIds(competitor.Id, competitor.ReferenceIds);
            _countryCode = competitor.CountryCode;
            _state       = competitor.State;
            if (competitor.Players != null && competitor.Players.Any())
            {
                _associatedPlayerIds.Clear();
                _associatedPlayerIds.AddRange(competitor.Players.Select(s => s.Id));
            }
            if (!string.IsNullOrEmpty(competitor.Gender))
            {
                _gender = competitor.Gender;
            }
            if (!string.IsNullOrEmpty(competitor.AgeGroup))
            {
                _ageGroup = competitor.AgeGroup;
            }
            //((List<CultureInfo>)_fetchedCultures).Add(culture);
        }
Beispiel #2
0
        public void CompetitorTest()
        {
            var teamType1 = new team
            {
                abbreviation     = "ABC",
                country          = "Germany",
                id               = SR.Urn("team").ToString(),
                name             = "Team A",
                @virtual         = true,
                virtualSpecified = true
            };
            var teamType2 = new team
            {
                abbreviation     = "ABC",
                country          = "Deutschland",
                id               = SR.Urn("team").ToString(),
                name             = "Team A",
                @virtual         = true,
                virtualSpecified = true
            };
            var competitorDTO1 = new CompetitorDTO(teamType1);
            var competitorDTO2 = new CompetitorDTO(teamType2);

            var competitorCI = new CompetitorCI(competitorDTO1, _cultureFirst, null);

            competitorCI.Merge(competitorDTO2, _cultureSecond);

            Assert.IsNotNull(competitorCI);
            Assert.AreEqual(competitorCI.Id.ToString(), teamType1.id);
            Assert.AreEqual(competitorCI.GetName(_cultureFirst), teamType1.name);
            Assert.AreEqual(competitorCI.GetAbbreviation(_cultureFirst), teamType1.abbreviation);
            Assert.AreEqual(competitorCI.IsVirtual, teamType1.@virtual);
            Assert.AreEqual(teamType1.country, competitorCI.GetCountry(_cultureFirst));
            Assert.AreEqual(teamType2.country, competitorCI.GetCountry(_cultureSecond));
        }
        private static void CompareCompetitor(CompetitorDTO competitor, XElement element)
        {
            Assert.IsNotNull(competitor);
            Assert.IsNotNull(element);

            Assert.AreEqual(competitor.Id.ToString(), element.Attribute("id")?.Value);
            Assert.AreEqual(competitor.Name, element.Attribute("name")?.Value);
            Assert.AreEqual(competitor.CountryName, element.Attribute("country")?.Value);
            Assert.AreEqual(competitor.Abbreviation, element.Attribute("abbreviation")?.Value);
            Assert.AreEqual(competitor.CountryCode, element.Attribute("country_code")?.Value);
            Assert.AreEqual(competitor.State, element.Attribute("state")?.Value);
            var refs = element.Element(GetXName("reference_ids"));

            if (refs == null)
            {
                Assert.IsTrue(!competitor.ReferenceIds.Any());
                return;
            }

            refs = refs.Descendants(GetXName("reference_id")).FirstOrDefault(f => (string)f.Attribute("name") == "betradar");
            if (refs != null)
            {
                Assert.AreEqual(competitor.ReferenceIds["betradar"], refs.Attribute("value")?.Value);
            }
            else
            {
                Assert.IsTrue(!competitor.ReferenceIds.ContainsKey("betradar"));
            }
        }
Beispiel #4
0
        /// <summary>
        ///     Merges the information from the provided <see cref="CompetitorDTO" /> into the current instance
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO" /> containing information about the competitor</param>
        /// <param name="culture">A <see cref="CultureInfo" /> specifying the language of the passed <code>dto</code></param>
        internal void Merge(CompetitorDTO competitor, CultureInfo culture)
        {
            Contract.Requires(competitor != null);

            _isVirtual              = competitor.IsVirtual;
            Names[culture]          = competitor.Name;
            _countryNames[culture]  = competitor.CountryName;
            _abbreviations[culture] = string.IsNullOrEmpty(competitor.Abbreviation)
                ? SdkInfo.GetAbbreviationFromName(competitor.Name)
                : competitor.Abbreviation;
            ReferenceId  = UpdateReferenceIds(competitor.Id, competitor.ReferenceIds);
            _countryCode = competitor.CountryCode;
            if (competitor.Players != null && competitor.Players.Any())
            {
                _associatedPlayerIds.Clear();
                _associatedPlayerIds.AddRange(competitor.Players.Select(s => s.Id));
            }

            if (!string.IsNullOrEmpty(competitor.Gender))
            {
                _gender = competitor.Gender;
            }

            //((List<CultureInfo>)_fetchedCultures).Add(culture);
        }
Beispiel #5
0
        /// <summary>
        /// Initializes new TeamCompetitorCI instance
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO"/> to be used to construct new instance</param>
        /// <param name="culture">A culture to be used to construct new instance</param>
        /// <param name="dataRouterManager">The <see cref="IDataRouterManager"/> used to fetch missing data</param>
        public TeamCompetitorCI(CompetitorDTO competitor, CultureInfo culture, IDataRouterManager dataRouterManager)
            : base(competitor, culture, dataRouterManager)
        {
            Guard.Argument(competitor, nameof(competitor)).NotNull();
            Guard.Argument(culture, nameof(culture)).NotNull();

            Merge(competitor, culture);
        }
        /// <summary>
        /// Initializes new TeamCompetitorCI instance
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO"/> to be used to construct new instance</param>
        /// <param name="culture">A culture to be used to construct new instance</param>
        /// <param name="dataRouterManager">The <see cref="IDataRouterManager"/> used to fetch missing data</param>
        public TeamCompetitorCI(CompetitorDTO competitor, CultureInfo culture, IDataRouterManager dataRouterManager)
            : base(competitor, culture, dataRouterManager)
        {
            Contract.Requires(competitor != null);
            Contract.Requires(culture != null);

            Merge(competitor, culture);
        }
Beispiel #7
0
 private static void ValidateTeamExtended(teamExtended msg, CompetitorDTO dto)
 {
     Assert.AreEqual(msg.id, dto.Id.ToString());
     Assert.AreEqual(msg.name, dto.Name);
     Assert.AreEqual(msg.abbreviation, dto.Abbreviation);
     Assert.AreEqual(msg.country, dto.CountryName);
     Assert.AreEqual(msg.@virtual, dto.IsVirtual);
 }
Beispiel #8
0
 private static void ValidateTeamCompetitor(teamCompetitor msg, CompetitorDTO dto)
 {
     Assert.AreEqual(msg.id, dto.Id.ToString());
     Assert.AreEqual(msg.name, dto.Name);
     Assert.AreEqual(msg.abbreviation, dto.Abbreviation);
     Assert.AreEqual(msg.country, dto.CountryName);
     Assert.AreEqual(msg.@virtual, dto.IsVirtual);
     //Assert.AreEqual(msg.@qualifier, dto.); //TODO: qualifier missing in dto
 }
Beispiel #9
0
        public static IList <CompetitorDTO> ObjectsToDTOs(IList <Competitor> objs)
        {
            IList <CompetitorDTO> list = new List <CompetitorDTO>();

            foreach (Competitor obj in objs)
            {
                CompetitorDTO dto = ObjectToDTO(obj);
                list.Add(dto);
            }

            return(list);
        }
Beispiel #10
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="CompetitorCI" /> class
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO" /> containing information about the competitor</param>
        /// <param name="culture">A <see cref="CultureInfo" /> specifying the language of the passed <code>dto</code></param>
        /// <param name="dataRouterManager">
        ///     The <see cref="IDataRouterManager" /> used to fetch <see cref="CompetitorDTO" />
        /// </param>
        internal CompetitorCI(CompetitorDTO competitor, CultureInfo culture, IDataRouterManager dataRouterManager)
            : base(competitor)
        {
            Contract.Requires(competitor != null);
            Contract.Requires(culture != null);

            _fetchedCultures = new List <CultureInfo>();
            _primaryCulture  = culture;

            _dataRouterManager = dataRouterManager;

            Names                = new Dictionary <CultureInfo, string>();
            _countryNames        = new Dictionary <CultureInfo, string>();
            _abbreviations       = new Dictionary <CultureInfo, string>();
            _associatedPlayerIds = new List <URN>();
            _jerseys             = new List <JerseyCI>();
            Merge(competitor, culture);
        }
Beispiel #11
0
        /// <summary>
        /// Merges the information from the provided <see cref="CompetitorDTO"/> into the current instance
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO"/> containing information about the competitor</param>
        /// <param name="culture">A <see cref="CultureInfo"/> specifying the language of the passed <code>dto</code></param>
        internal void Merge(CompetitorDTO competitor, CultureInfo culture)
        {
            Guard.Argument(competitor, nameof(competitor)).NotNull();

            _isVirtual              = competitor.IsVirtual;
            Names[culture]          = competitor.Name;
            _countryNames[culture]  = competitor.CountryName;
            _abbreviations[culture] = string.IsNullOrEmpty(competitor.Abbreviation)
                ? SdkInfo.GetAbbreviationFromName(competitor.Name)
                : competitor.Abbreviation;
            _referenceId = UpdateReferenceIds(competitor.Id, competitor.ReferenceIds);
            if (!string.IsNullOrEmpty(competitor.CountryCode))
            {
                _countryCode = competitor.CountryCode;
            }
            if (!string.IsNullOrEmpty(competitor.State))
            {
                _state = competitor.State;
            }
            if (competitor.Players != null && !competitor.Players.IsNullOrEmpty())
            {
                _associatedPlayerIds = competitor.Players.Select(s => s.Id).ToList();
            }
            if (!string.IsNullOrEmpty(competitor.Gender))
            {
                _gender = competitor.Gender;
            }
            if (!string.IsNullOrEmpty(competitor.AgeGroup))
            {
                _ageGroup = competitor.AgeGroup;
            }
            if (competitor.SportId != null)
            {
                _sportId = competitor.SportId;
            }
            if (competitor.CategoryId != null)
            {
                _categoryId = competitor.CategoryId;
            }
            if (!string.IsNullOrEmpty(competitor.ShortName))
            {
                _shortName = competitor.ShortName;
            }
        }
Beispiel #12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CompetitorCI"/> class
        /// </summary>
        /// <param name="competitor">A <see cref="CompetitorDTO"/> containing information about the competitor</param>
        /// <param name="culture">A <see cref="CultureInfo"/> specifying the language of the passed <code>dto</code></param>
        /// <param name="dataRouterManager">The <see cref="IDataRouterManager"/> used to fetch <see cref="CompetitorDTO"/></param>
        internal CompetitorCI(CompetitorDTO competitor, CultureInfo culture, IDataRouterManager dataRouterManager)
            : base(competitor)
        {
            Guard.Argument(competitor, nameof(competitor)).NotNull();
            Guard.Argument(culture, nameof(culture)).NotNull();

            _fetchedCultures = new List <CultureInfo>();
            _primaryCulture  = culture;

            _dataRouterManager = dataRouterManager;

            Names                = new Dictionary <CultureInfo, string>();
            _countryNames        = new Dictionary <CultureInfo, string>();
            _abbreviations       = new Dictionary <CultureInfo, string>();
            _associatedPlayerIds = new List <URN>();
            _jerseys             = new List <JerseyCI>();
            _lastTimeCompetitorProfileFetched = DateTime.MinValue;
            _cultureCompetitorProfileFetched  = new List <CultureInfo>();
            Merge(competitor, culture);
        }
Beispiel #13
0
        private void AddCompetitor(URN id, CompetitorDTO 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.Error($"Error adding 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 CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));
            }

            if (item?.Players != null && item.Players.Any())
            {
                foreach (var player in item.Players)
                {
                    AddPlayerCompetitor(player, item.Id, culture, false);
                }
            }
        }
Beispiel #14
0
        }// End of Object To DTO function

        internal static Competitor DTOToObject(CompetitorDTO competitor)
        {
            return(new Competitor
            {
                name = competitor.name,
                address = competitor.address,
                address2 = competitor.address2,
                city = competitor.city,
                country = competitor.country,
                email = competitor.email,
                phone_number = competitor.phone_number,
                second_name = competitor.second_name,
                sex = competitor.sex,
                state = competitor.state,
                user = competitor.user,
                zip_code = competitor.zip_code,
                birth_date = DataConvert.StringJsonToDateTime(competitor.birth_date),
                timestamp = DataConvert.StringJsonToDateTime(competitor.timestamp),
                updated = DataConvert.StringJsonToDateTime(competitor.updated)
            });
        }
Beispiel #15
0
        /// <summary>
        /// Object To Data Transfer Object
        /// </summary>
        /// <param name="competitor"></param>
        /// <returns></returns>
        public static CompetitorDTO ObjectToDTO(Competitor competitor)
        {
            CompetitorDTO dto = new CompetitorDTO();

            dto.name         = competitor.name;
            dto.email        = competitor.email;
            dto.second_name  = competitor.second_name;
            dto.city         = competitor.city;
            dto.state        = competitor.state;
            dto.country      = competitor.country;
            dto.zip_code     = competitor.zip_code;
            dto.address      = competitor.address;
            dto.address2     = competitor.address2;
            dto.phone_number = competitor.phone_number;
            dto.sex          = competitor.sex;
            dto.user         = competitor.user;
            dto.birth_date   = DataConvert.DateTimeToJsonString(competitor.birth_date);
            dto.timestamp    = DataConvert.DateTimeToJsonString(competitor.timestamp);
            dto.updated      = DataConvert.DateTimeToJsonString(competitor.updated);

            return(dto);
        }// End of Object To DTO function
        private async Task AddCompetitorAsync(URN id, CompetitorDTO item, CultureInfo culture, bool useSemaphore)
        {
            if (_cache.Contains(id.ToString()))
            {
                try
                {
                    var ci = (CompetitorCI)_cache.Get(id.ToString());
                    if (useSemaphore)
                    {
                        await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false);
                    }
                    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)
                    {
                        await ReleaseIdAsync(_mergeUrns, id).ConfigureAwait(false);
                    }
                }
            }
            else
            {
                _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), 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);
            }
        }
 public Competitor Map(CompetitorDTO dto)
 {
     if (dto == null) return null;
     var competitor = Mapper.Map<CompetitorDTO, Competitor>(dto);
     return competitor;
 }