예제 #1
0
        public void FixtureDTOMappingTest()
        {
            var msg = RMF.GetFixture();
            var dto = new FixtureDTO(msg, null);

            Assert.AreEqual(msg.id, dto.Id.ToString());
            Assert.AreEqual(msg.name, dto.Name);
            Assert.AreEqual(msg.liveodds, dto.LiveOdds);
            Assert.AreEqual(SdkInfo.ParseDate(msg.next_live_time), dto.NextLiveTime);
            Assert.AreEqual(msg.start_time, dto.StartTime);
            Assert.AreEqual(msg.scheduled, dto.Scheduled);
            Assert.AreEqual(msg.scheduled_end, dto.ScheduledEnd);
            Assert.AreEqual(!string.IsNullOrEmpty(msg.replaced_by) ? URN.Parse(msg.replaced_by) : null, dto.ReplacedBy);
            Assert.AreEqual(msg.start_time_tbdSpecified ? (bool?)msg.start_time_tbd : null, dto.StartTimeTbd);
            Assert.AreEqual(msg.competitors.Length, dto.Competitors.Count());

            for (var i = 0; i < msg.competitors.Length; i++)
            {
                ValidateTeamCompetitor(msg.competitors[i], dto.Competitors.ToList()[i]);
            }
            ValidateCoverageInfo(msg.coverage_info, dto.Coverage);
            Assert.AreEqual(msg.delayed_info.id, dto.DelayedInfo.Id);

            Assert.AreEqual(msg.extra_info.Length, dto.ExtraInfo.ToList().Count);
            for (var i = 0; i < msg.extra_info.Length; i++)
            {
                Assert.IsTrue(dto.ExtraInfo.ContainsKey(msg.extra_info[i].key));
                dto.ExtraInfo.TryGetValue(msg.extra_info[i].key, out var eiValue);
                Assert.AreEqual(msg.extra_info[i].value, eiValue);
            }
        }
예제 #2
0
        /// <summary>
        /// Merges the specified fixture
        /// </summary>
        /// <param name="fixture">The fixture</param>
        /// <param name="culture">The culture</param>
        /// <param name="useLock">Should the lock mechanism be used during merge</param>
        public void MergeFixture(FixtureDTO fixture, CultureInfo culture, bool useLock)
        {
            //Merge(fixture, culture);

            if (useLock)
            {
                lock (MergeLock)
                {
                    if (fixture.ReferenceIds != null)
                    {
                        _referenceId = new ReferenceIdCI(fixture.ReferenceIds);
                    }
                    if (fixture.BookingStatus != null)
                    {
                        _bookingStatus = fixture.BookingStatus;
                    }
                }
            }
            else
            {
                if (fixture.ReferenceIds != null)
                {
                    _referenceId = new ReferenceIdCI(fixture.ReferenceIds);
                }
                if (fixture.BookingStatus != null)
                {
                    _bookingStatus = fixture.BookingStatus;
                }
            }
        }
예제 #3
0
        public void Init()
        {
            _record = Deserializer.Deserialize(FileHelper.OpenFile(TestData.RestXmlPath, InputXml));
            _entity = new FixtureMapperFactory().CreateMapper(_record).Map();

            _assertHelper = new AssertHelper(_entity);
        }
예제 #4
0
        /// <summary>
        /// Merges the specified fixture
        /// </summary>
        /// <param name="fixture">The fixture</param>
        /// <param name="culture">The culture</param>
        /// <param name="useLock">Should the lock mechanism be used during merge</param>
        public new void MergeFixture(FixtureDTO fixture, CultureInfo culture, bool useLock)
        {
            if (useLock)
            {
                lock (MergeLock)
                {
                    base.MergeFixture(fixture, culture, false);
                    _categoryId = fixture.Tournament?.Category?.Id;

                    if (fixture.Type != null)
                    {
                        _stageType = fixture.Type.Value == SportEventType.Parent
                                         ? StageType.Parent
                                         : StageType.Child;
                    }
                }
            }
            else
            {
                base.MergeFixture(fixture, culture, false);
                _categoryId = fixture.Tournament?.Category?.Id;

                if (fixture.Type != null)
                {
                    _stageType = fixture.Type.Value == SportEventType.Parent
                                     ? StageType.Parent
                                     : StageType.Child;
                }
            }
        }
        /// <summary>
        ///     Builds a <see cref="SportEventCI" /> instance from the provided <see cref="FixtureDTO" /> instance
        /// </summary>
        /// <param name="fixture">A <see cref="FixtureDTO" /> instance containing fixture (pre-match) related sport event info</param>
        /// <param name="currentCulture">A <see cref="CultureInfo" /> of the <see cref="FixtureDTO" /> data</param>
        /// <returns>a new instance of <see cref="SportEventCI" /> instance</returns>
        public SportEventCI Build(FixtureDTO fixture, CultureInfo currentCulture)
        {
            if (fixture.Id.TypeGroup == ResourceTypeGroup.STAGE)
            {
                return(new StageCI(fixture, _dataRouterManager, _semaphorePool, currentCulture, _defaultCulture,
                                   _fixtureTimestampCache));
            }
            if (fixture.Id.TypeGroup == ResourceTypeGroup.MATCH)
            {
                return(new MatchCI(fixture, _dataRouterManager, _semaphorePool, currentCulture, _defaultCulture,
                                   _fixtureTimestampCache));
            }
            if (fixture.Id.TypeGroup == ResourceTypeGroup.SEASON ||
                fixture.Id.TypeGroup == ResourceTypeGroup.BASIC_TOURNAMENT ||
                fixture.Id.TypeGroup == ResourceTypeGroup.TOURNAMENT)
            {
                return(new TournamentInfoCI(fixture, _dataRouterManager, _semaphorePool, currentCulture,
                                            _defaultCulture, _fixtureTimestampCache));
            }
            if (fixture.Id.TypeGroup == ResourceTypeGroup.DRAW ||
                fixture.Id.TypeGroup == ResourceTypeGroup.LOTTERY)
            {
                // should not be any fixture
                var a = 1;
            }

            return(new SportEventCI(fixture, _dataRouterManager, _semaphorePool, currentCulture, _defaultCulture,
                                    _fixtureTimestampCache));
        }
예제 #6
0
        internal Fixture(FixtureDTO fixtureDto)
        {
            Guard.Argument(fixtureDto, nameof(fixtureDto)).NotNull();

            StartTime          = fixtureDto.StartTime;
            NextLiveTime       = fixtureDto.NextLiveTime;
            StartTimeConfirmed = fixtureDto.StartTimeConfirmed;
            StartTimeTBD       = fixtureDto.StartTimeTbd;
            ReplacedBy         = fixtureDto.ReplacedBy;
            ExtraInfo          = fixtureDto.ExtraInfo;
            if (fixtureDto.TvChannels != null)
            {
                if (TvChannels == null)
                {
                    TvChannels = fixtureDto.TvChannels.Select(tvChannelDTO => new TvChannel(tvChannelDTO.Name, tvChannelDTO.StartTime, tvChannelDTO.StreamUrl)).ToList();
                }
                else
                {
                    var tvChannels = TvChannels.ToList();
                    foreach (var tvChannelDTO in fixtureDto.TvChannels)
                    {
                        var tvChannel = tvChannels.Find(f => f.Name.Equals(tvChannelDTO.Name, StringComparison.InvariantCultureIgnoreCase));
                        if (tvChannel != null)
                        {
                            tvChannels.Remove(tvChannel);
                        }
                        tvChannels.Add(new TvChannel(tvChannelDTO.Name, tvChannelDTO.StartTime, tvChannelDTO.StreamUrl));
                    }
                    TvChannels = tvChannels;
                }
            }
            if (fixtureDto.Coverage != null)
            {
                CoverageInfo = new CoverageInfo(fixtureDto.Coverage.Level, fixtureDto.Coverage.IsLive, fixtureDto.Coverage.Includes, fixtureDto.Coverage.CoveredFrom);
            }
            if (fixtureDto.ProductInfo != null)
            {
                ProductInfo = new ProductInfo(fixtureDto.ProductInfo);
            }

            if (fixtureDto.ReferenceIds != null)
            {
                References = new Reference(new ReferenceIdCI(fixtureDto.ReferenceIds));
            }

            if (fixtureDto.ScheduledStartTimeChanges != null)
            {
                ScheduledStartTimeChanges = fixtureDto.ScheduledStartTimeChanges.Select(s => new ScheduledStartTimeChange(s));
            }
            if (fixtureDto.ParentStage != null)
            {
                ParentStageId = fixtureDto.ParentStage.Id;
            }
            if (!fixtureDto.AdditionalParents.IsNullOrEmpty())
            {
                AdditionalParentsIds = fixtureDto.AdditionalParents.Select(s => s.Id);
            }
        }
        /// <summary>
        /// Merges the specified fixture
        /// </summary>
        /// <param name="fixture">The fixture</param>
        /// <param name="culture">The culture</param>
        private void ActualMergeFixture(FixtureDTO fixture, CultureInfo culture)
        {
            Merge(new TournamentInfoDTO(fixture), culture, false);

            if (fixture.ReferenceIds != null)
            {
                _referenceId = new ReferenceIdCI(fixture.ReferenceIds);
            }
        }
예제 #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MatchCI"/> class
 /// </summary>
 /// <param name="fixture">The fixture data</param>
 /// <param name="dataRouterManager">The <see cref="IDataRouterManager"/> used to obtain summary and fixture</param>
 /// <param name="semaphorePool">The semaphore pool</param>
 /// <param name="currentCulture">The current culture</param>
 /// <param name="defaultCulture">The default culture</param>
 /// <param name="fixtureTimestampCache">A <see cref="MemoryCache"/> used to cache the sport events fixture timestamps</param>
 public MatchCI(FixtureDTO fixture,
                 IDataRouterManager dataRouterManager,
                 ISemaphorePool semaphorePool,
                 CultureInfo currentCulture,
                 CultureInfo defaultCulture,
                 MemoryCache fixtureTimestampCache)
     : base(fixture, dataRouterManager, semaphorePool, currentCulture, defaultCulture, fixtureTimestampCache)
 {
     Merge(fixture, currentCulture, true);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="TournamentInfoCI"/> class
 /// </summary>
 /// <param name="fixture">The fixture data</param>
 /// <param name="dataRouterManager">The <see cref="IDataRouterManager"/> used to obtain summary and fixture</param>
 /// <param name="semaphorePool">A <see cref="ISemaphorePool" /> instance used to obtain sync objects</param>
 /// <param name="currentCulture">A <see cref="CultureInfo" /> of the <see cref="SportEventSummaryDTO" /> instance</param>
 /// <param name="defaultCulture">A <see cref="CultureInfo" /> specifying the language used when fetching info which is not translatable (e.g. Scheduled, ..)</param>
 /// <param name="fixtureTimestampCache">A <see cref="ObjectCache"/> used to cache the sport events fixture timestamps</param>
 public TournamentInfoCI(FixtureDTO fixture,
                         IDataRouterManager dataRouterManager,
                         ISemaphorePool semaphorePool,
                         CultureInfo currentCulture,
                         CultureInfo defaultCulture,
                         ObjectCache fixtureTimestampCache)
     : base(fixture, dataRouterManager, semaphorePool, currentCulture, defaultCulture, fixtureTimestampCache)
 {
     Merge(fixture, currentCulture, true);
 }
예제 #10
0
        internal Fixture(FixtureDTO fixtureDto)
        {
            Contract.Requires(fixtureDto != null);

            StartTime          = fixtureDto.StartTime;
            NextLiveTime       = fixtureDto.NextLiveTime;
            StartTimeConfirmed = fixtureDto.StartTimeConfirmed;
            StartTimeTBD       = fixtureDto.StartTimeTBD;
            ReplacedBy         = fixtureDto.ReplacedBy;
            ExtraInfo          = fixtureDto.ExtraInfo;
            if (fixtureDto.TvChannels != null)
            {
                if (TvChannels == null)
                {
                    TvChannels = fixtureDto.TvChannels.Select(tvChannelDTO => new TvChannel(tvChannelDTO.Name, tvChannelDTO.StartTime, tvChannelDTO.StreamUrl)).ToList();
                }
                else
                {
                    var tvChannels = TvChannels.ToList();
                    foreach (var tvChannelDTO in fixtureDto.TvChannels)
                    {
                        var tvChannel = tvChannels.Find(f => f.Name.Equals(tvChannelDTO.Name, StringComparison.InvariantCultureIgnoreCase));
                        if (tvChannel != null)
                        {
                            tvChannels.Remove(tvChannel);
                        }
                        tvChannels.Add(new TvChannel(tvChannelDTO.Name, tvChannelDTO.StartTime, tvChannelDTO.StreamUrl));
                    }
                    TvChannels = tvChannels;
                }
            }
            if (fixtureDto.CoverageInfo != null)
            {
                CoverageInfo = new CoverageInfo(fixtureDto.CoverageInfo.Level, fixtureDto.CoverageInfo.IsLive, fixtureDto.CoverageInfo.Includes, fixtureDto.CoverageInfo.CoveredFrom);
            }
            if (fixtureDto.ProductInfo != null)
            {
                ProductInfo = new ProductInfo(fixtureDto.ProductInfo.IsAutoTraded,
                                              fixtureDto.ProductInfo.IsInHostedStatistics,
                                              fixtureDto.ProductInfo.IsInLiveCenterSoccer,
                                              fixtureDto.ProductInfo.IsInLiveScore,
                                              fixtureDto.ProductInfo.ProductInfoLinks?.Select(t => new ProductInfoLink(t.Reference, t.Name)),
                                              fixtureDto.ProductInfo.StreamingChannels?.Select(t => new StreamingChannel(t.Id, t.Name)));
            }

            if (fixtureDto.ReferenceIds != null)
            {
                References = new Reference(new ReferenceIdCI(fixtureDto.ReferenceIds));
            }

            if (fixtureDto.ScheduledStartTimeChanges != null)
            {
                ScheduledStartTimeChanges = fixtureDto.ScheduledStartTimeChanges.Select(s => new ScheduledStartTimeChange(s));
            }
        }
예제 #11
0
 /// <summary>
 /// Merges the specified fixture
 /// </summary>
 /// <param name="fixture">The fixture</param>
 /// <param name="culture">The culture</param>
 /// <param name="useLock">Should the lock mechanism be used during merge</param>
 public new void MergeFixture(FixtureDTO fixture, CultureInfo culture, bool useLock)
 {
     if (useLock)
     {
         lock (MergeLock)
         {
             ActualMergeFixture(fixture, culture);
         }
     }
     else
     {
         ActualMergeFixture(fixture, culture);
     }
 }
예제 #12
0
 /// <summary>
 /// Merges the specified fixtureDTO
 /// </summary>
 /// <param name="fixtureDTO">The fixtureDTO</param>
 /// <param name="culture">The culture</param>
 /// <param name="useLock">Should the lock mechanism be used during merge</param>
 public new void MergeFixture(FixtureDTO fixtureDTO, CultureInfo culture, bool useLock)
 {
     if (useLock)
     {
         lock (MergeLock)
         {
             base.MergeFixture(fixtureDTO, culture, false);
             _categoryId = fixtureDTO.Tournament?.Category?.Id;
         }
     }
     else
     {
         base.MergeFixture(fixtureDTO, culture, false);
         _categoryId = fixtureDTO.Tournament?.Category?.Id;
     }
 }
예제 #13
0
        /// <summary>
        /// Merges the specified fixture
        /// </summary>
        /// <param name="fixture">The fixture</param>
        /// <param name="culture">The culture</param>
        private void ActualMergeFixture(FixtureDTO fixture, CultureInfo culture)
        {
            base.MergeFixture(fixture, culture, false);
            Merge(fixture, culture, false);

            _fixture = new Fixture(fixture);
            if (fixture.DelayedInfo != null)
            {
                if (_delayedInfo == null)
                {
                    _delayedInfo = new DelayedInfoCI(fixture.DelayedInfo, culture);
                }
                else
                {
                    _delayedInfo.Merge(fixture.DelayedInfo, culture);
                }
            }
        }
예제 #14
0
        /// <summary>
        /// Merges the specified fixtureDTO
        /// </summary>
        /// <param name="fixtureDTO">The fixtureDTO</param>
        /// <param name="culture">The culture</param>
        /// <param name="useLock">Should the lock mechanism be used during merge</param>
        public void MergeFixture(FixtureDTO fixtureDTO, CultureInfo culture, bool useLock)
        {
            if (useLock)
            {
                lock (MergeLock)
                {
                    if (fixtureDTO.ReferenceIds != null)
                    {
                        _referenceId = new ReferenceIdCI(fixtureDTO.ReferenceIds);
                    }
                    if (fixtureDTO.BookingStatus != null)
                    {
                        _bookingStatus = fixtureDTO.BookingStatus;
                    }
                }
            }
            else
            {
                if (fixtureDTO.ReferenceIds != null)
                {
                    _referenceId = new ReferenceIdCI(fixtureDTO.ReferenceIds);
                }
                if (fixtureDTO.BookingStatus != null)
                {
                    _bookingStatus = fixtureDTO.BookingStatus;
                }
            }

            if (!string.IsNullOrEmpty(fixtureDTO.LiveOdds))
            {
                _liveOdds = fixtureDTO.LiveOdds;
            }

            if (fixtureDTO.Type != null)
            {
                _sportEventType = fixtureDTO.Type;
            }

            if (fixtureDTO.StageType != null)
            {
                _stageType = fixtureDTO.StageType;
            }
        }
예제 #15
0
        public async System.Threading.Tasks.Task HttpCall()
        {
            results = new FixturesDTO();
            var result = new FixtureResultDTO()
            {
                GoalsAwayTeam = 2,
                GoalsHomeTeam = 2
            };
            var fixture = new FixtureDTO()
            {
                AwayTeamName = "druzyna przeciwna",
                HomeTeamName = "druzyna gospodarzy",
                //Date = System.DateTime.Parse("")
                Result = result,
                Status = "active"
            };

            results.Fixtures = new List <FixtureDTO>();
            results.Fixtures.Add(fixture);
        }
        public ActionResult <ICollection <FixtureEncounterDTO> > GenerateFixture([FromBody] FixtureDTO data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                fixtureSelector.CreateInstance(data.AlgorithmName, encounterBL);
                var teams      = sportBL.GetById(data.SportId).Teams;
                var encounters = mapper.Map <FixtureEncounterDTO[]>(fixtureSelector.GenerateFixture(teams, data.Date));
                var response   = Ok(encounters);
                return(Ok(encounters));
            }
            catch (SportDoesNotExistException e)
            {
                return(NotFound(e.Message));
            }
            catch (FixtureGeneratorAlgorithmDoesNotExistException e)
            {
                return(NotFound(e.Message));
            }
            catch (NotEnoughTeamsForEncounterException e)
            {
                return(NotFound(e.Message));
            }
            catch (AlgorithmDoesNotExistException e)
            {
                return(NotFound(e.Message));
            }
            catch (ThereAreNoAlgorithmsException e)
            {
                return(NotFound(e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }