/// <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); }
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")); } }
/// <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); }
/// <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); }
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); }
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 }
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); }
/// <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); }
/// <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; } }
/// <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); }
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); } } }
}// 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) }); }
/// <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; }