Пример #1
0
 /// <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);
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
 /// <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);
     }
 }
Пример #4
0
 /// <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);
     }
 }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
 /// <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);
 }