Ejemplo n.º 1
0
        public void MarketMappingDTOMappingTest()
        {
            var msg = RMF.GetMappingsMapping();
            var dto = new MarketMappingDTO(msg);

            ValidateMapping(msg, dto);
        }
Ejemplo n.º 2
0
        internal void Merge(MarketMappingDTO dto, CultureInfo culture)
        {
            if (dto.OutcomeMappings == null)
            {
                return;
            }

            var shouldHave = OutcomeMappings.Count > 0;

            if (string.IsNullOrEmpty(dto.OrgMarketId))
            {
                OrgMarketId = dto.OrgMarketId;
            }

            foreach (var outcomeMappingDTO in dto.OutcomeMappings)
            {
                var mapping = OutcomeMappings.FirstOrDefault(f => f.OutcomeId.Equals(outcomeMappingDTO.OutcomeId, StringComparison.InvariantCultureIgnoreCase));
                if (mapping == null && shouldHave)
                {
                    //investigate
                }
                if (mapping != null)
                {
                    mapping.Merge(outcomeMappingDTO, culture);
                }
                else
                {
                    OutcomeMappings.Add(new OutcomeMappingCacheItem(outcomeMappingDTO, culture));
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Constructs and returns a <see cref="MarketMappingCacheItem"/> from the provided DTO
        /// </summary>
        /// <param name="dto">The <see cref="MarketMappingDTO"/> containing mapping data</param>
        /// <param name="factory">The <see cref="IMappingValidatorFactory"/> used to construct mapping validator</param>
        /// <param name="culture">A <see cref="CultureInfo"/> </param>
        /// <returns>The constructed <see cref="MarketMappingCacheItem"/></returns>
        /// <exception cref="InvalidOperationException">The format of <see cref="MarketMappingDTO.ValidFor"/> is not correct</exception>
        public static MarketMappingCacheItem Build(MarketMappingDTO dto, IMappingValidatorFactory factory, CultureInfo culture)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();
            Guard.Argument(factory, nameof(factory)).NotNull();

            return(string.IsNullOrEmpty(dto.ValidFor)
                ? new MarketMappingCacheItem(dto, null, culture)
                : new MarketMappingCacheItem(dto, factory.Build(dto.ValidFor), culture));
        }
        /// <summary>
        /// Constructs and returns a <see cref="MarketMappingCacheItem"/> from the provided DTO
        /// </summary>
        /// <param name="dto">The <see cref="MarketMappingDTO"/> containing mapping data</param>
        /// <param name="factory">The <see cref="IMappingValidatorFactory"/> used to construct mapping validator</param>
        /// <param name="culture">A <see cref="CultureInfo"/> </param>
        /// <returns>The constructed <see cref="MarketMappingCacheItem"/></returns>
        /// <exception cref="InvalidOperationException">The format of <see cref="MarketMappingDTO.ValidFor"/> is not correct</exception>
        public static MarketMappingCacheItem Build(MarketMappingDTO dto, IMappingValidatorFactory factory, CultureInfo culture)
        {
            Contract.Requires(dto != null);
            Contract.Requires(factory != null);

            return(string.IsNullOrEmpty(dto.ValidFor)
                ? new MarketMappingCacheItem(dto, null, culture)
                : new MarketMappingCacheItem(dto, factory.Build(dto.ValidFor), culture));
        }
        protected MarketMappingCacheItem(MarketMappingDTO dto)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();

            ProductId       = dto.ProductId;
            SportId         = dto.SportId;
            MarketTypeId    = dto.MarketTypeId;
            MarketSubTypeId = dto.MarketSubTypeId;
            SovTemplate     = dto.SovTemplate;

            if (dto.OutcomeMappings != null)
            {
                OutcomeMappings = dto.OutcomeMappings.Select(o => new OutcomeMappingCacheItem(o));
            }
        }
        protected MarketMappingCacheItem(MarketMappingDTO dto, IMappingValidator validator, CultureInfo culture)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();

            ProducerIds     = dto.ProducerIds;
            SportId         = dto.SportId;
            OrgMarketId     = dto.OrgMarketId;
            MarketTypeId    = dto.MarketTypeId;
            MarketSubTypeId = dto.MarketSubTypeId;
            SovTemplate     = dto.SovTemplate;
            ValidFor        = dto.ValidFor;
            Validator       = validator;

            if (dto.OutcomeMappings != null)
            {
                OutcomeMappings = dto.OutcomeMappings.Select(o => new OutcomeMappingCacheItem(o, culture)).ToList();
            }
        }
Ejemplo n.º 7
0
        private static void ValidateMapping(mappingsMapping msg, MarketMappingDTO dto)
        {
            var dtoMarketId = dto.MarketSubTypeId == null?dto.MarketTypeId.ToString() : $"{dto.MarketTypeId}:{dto.MarketSubTypeId}";

            Assert.AreEqual(msg.market_id, dtoMarketId);
            Assert.AreEqual(msg.sport_id, dto.SportId.ToString());
            Assert.AreEqual(msg.sov_template, dto.SovTemplate);
            Assert.AreEqual(msg.valid_for, dto.ValidFor);

            if (msg.mapping_outcome != null)
            {
                Assert.AreEqual(msg.mapping_outcome.Length, dto.OutcomeMappings.Count());

                for (var i = 0; i < msg.mapping_outcome.Length; i++)
                {
                    ValidateMappingOutcome(msg.mapping_outcome[i], dto.OutcomeMappings.ToArray()[i]);
                }
            }
        }
        protected MarketMappingCacheItem(MarketMappingDTO dto, IMappingValidator validator, CultureInfo culture)
        {
            Contract.Requires(dto != null);

            ProducerId      = dto.ProducerId;
            ProducerIds     = dto.ProducerIds;
            SportId         = dto.SportId;
            OrgMarketId     = dto.OrgMarketId;
            MarketTypeId    = dto.MarketTypeId;
            MarketSubTypeId = dto.MarketSubTypeId;
            SovTemplate     = dto.SovTemplate;
            ValidFor        = dto.ValidFor;
            Validator       = validator;

            if (dto.OutcomeMappings != null)
            {
                OutcomeMappings = dto.OutcomeMappings.Select(o => new OutcomeMappingCacheItem(o, culture)).ToList();
            }
        }
        private bool MarketMappingsMatch(MarketMappingCacheItem ci, MarketMappingDTO dto)
        {
            var isMatch = ci.MarketTypeId == dto.MarketTypeId && ci.MarketSubTypeId == dto.MarketSubTypeId;

            if (isMatch && ci.SportId != null)
            {
                isMatch = ci.SportId.Equals(dto.SportId);
            }

            if (isMatch && ci.ProducerIds != null)
            {
                isMatch = ci.ProducerIds.All(a => dto.ProducerIds.Contains(a));
            }

            if (isMatch && !string.IsNullOrEmpty(ci.ValidFor))
            {
                isMatch = ci.ValidFor.Equals(dto.ValidFor, StringComparison.InvariantCultureIgnoreCase);
            }

            return(isMatch);
        }
 // ReSharper disable once UnusedParameter.Global
 internal void Merge(MarketMappingDTO dto)
 {
     // this type has no translatable properties for now, so merge is not required
     // and the method is only defined for consistency
 }
        /// <summary>
        /// Constructs and returns a <see cref="MarketMappingCacheItem"/> from the provided DTO
        /// </summary>
        /// <param name="dto">The <see cref="MarketMappingDTO"/> containing mapping data</param>
        /// <returns>The constructed <see cref="MarketMappingCacheItem"/></returns>
        public static MarketMappingCacheItem Build(MarketMappingDTO dto)
        {
            Guard.Argument(dto, nameof(dto)).NotNull();

            return(new MarketMappingCacheItem(dto));
        }