/// <summary> /// Merges the specified fixture /// </summary> /// <param name="timelineDTO">The match timeline</param> /// <param name="culture">The culture</param> private void ActualMergeTimeline(MatchTimelineDTO timelineDTO, CultureInfo culture) { if (_eventTimeline == null) { _eventTimeline = new EventTimelineCI(timelineDTO, culture); } else { _eventTimeline.Merge(timelineDTO, culture); } }
private void UpdateMatchWithTimeline(MatchTimelineDTO item, CultureInfo culture) { if (item?.BasicEvents == null) { return; } var cacheItem = _sportEventCacheItemFactory.Get(Cache.Get(item.SportEvent.Id.ToString())); var matchCI = cacheItem as MatchCI; matchCI?.MergeTimeline(item, culture, true); }
/// <summary> /// Merges the specified fixture /// </summary> /// <param name="timelineDTO">The match timeline</param> /// <param name="culture">The culture</param> /// <param name="useLock">Should the lock mechanism be used during merge</param> public void MergeTimeline(MatchTimelineDTO timelineDTO, CultureInfo culture, bool useLock) { if (useLock) { lock (MergeLock) { ActualMergeTimeline(timelineDTO, culture); } } else { ActualMergeTimeline(timelineDTO, culture); } }
/// <summary> /// Merges the specified fixture /// </summary> /// <param name="timelineDTO">The match timeline</param> /// <param name="culture">The culture</param> private void ActualMergeTimeline(MatchTimelineDTO timelineDTO, CultureInfo culture) { if (_eventTimeline == null) { _eventTimeline = new EventTimelineCI(timelineDTO, culture); } else { _eventTimeline.Merge(timelineDTO, culture); } if (timelineDTO.CoverageInfo != null) { _coverageInfo = new CoverageInfoCI(timelineDTO.CoverageInfo); } }
private void AddMatchTimeLine(MatchTimelineDTO item, CultureInfo culture, ISportEventCI requester, DtoType dtoType) { AddSportEvent(item.SportEvent.Id, item.SportEvent, culture, requester, dtoType); lock (_addLock) { try { UpdateMatchWithTimeline(item, culture); } catch (Exception ex) { ExecutionLog.Error($"Error adding timeline for id={item.SportEvent.Id}, dto type={item.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex); } } }
/// <summary> /// Merges the specified dto /// </summary> /// <param name="dto">The dto</param> /// <param name="culture">The culture</param> public void Merge(MatchTimelineDTO dto, CultureInfo culture) { Guard.Argument(dto, nameof(dto)).NotNull(); if (dto.BasicEvents != null && dto.BasicEvents.Any()) { if (_timeline == null) { _timeline = dto.BasicEvents.Select(s => new TimelineEventCI(s, culture)).ToList(); } else { // delete obsolete timeline events _timeline.RemoveAll(timelineEvent => dto.BasicEvents.All(basicEvent => basicEvent.Id != timelineEvent.Id)); foreach (var basicEvent in dto.BasicEvents) { var timelineEvent = _timeline.FirstOrDefault(s => s.Id == basicEvent.Id); if (timelineEvent != null && timelineEvent.Id == basicEvent.Id) { timelineEvent.Merge(basicEvent, culture); } else { _timeline.Add(new TimelineEventCI(basicEvent, culture)); } } } } if (!_isFinalized && dto.SportEventStatus != null) { if (dto.SportEventStatus.Status == EventStatus.Closed || dto.SportEventStatus.Status == EventStatus.Ended) { _isFinalized = true; } } _fetchedCultures.Add(culture); }
/// <summary> /// Merges the specified dto /// </summary> /// <param name="dto">The dto</param> /// <param name="culture">The culture</param> public void Merge(MatchTimelineDTO dto, CultureInfo culture) { Contract.Requires(dto != null); if (dto.BasicEvents != null && dto.BasicEvents.Any()) { if (_timeline == null) { _timeline = dto.BasicEvents.Select(s => new TimelineEventCI(s, culture)).ToList(); } else { foreach (var basicEvent in dto.BasicEvents) { var timelineEvent = _timeline.FirstOrDefault(s => s.Id == basicEvent.Id); if (timelineEvent != null && timelineEvent.Id == basicEvent.Id) { timelineEvent.Merge(basicEvent, culture); } else { _timeline.Add(new TimelineEventCI(basicEvent, culture)); } } } } if (!IsFinalized && dto.SportEventStatus != null) { if (dto.SportEventStatus.Status == EventStatus.Closed || dto.SportEventStatus.Status == EventStatus.Ended) { IsFinalized = true; } } _fetchedCultures.Add(culture); }
/// <summary> /// Initializes a new instance of the <see cref="EventTimelineCI"/> class. /// </summary> /// <param name="dto">The events.</param> /// <param name="culture"></param> public EventTimelineCI(MatchTimelineDTO dto, CultureInfo culture) { _fetchedCultures = new List <CultureInfo>(); Merge(dto, culture); }