private void BetStop(bet_stop e, dbEntities cnn, string routeKey)
        {
            using (var dbContextTransaction = cnn.Database.BeginTransaction())
            {
                var sectionName = string.Empty;
                var spParams    = string.Empty;
                try
                {
                    sectionName = "bet_stop";
                    spParams    = "EXECUTE PROCEDURE BET_EVENTBETSTOP_I(";
                    spParams   += SourceId + ",";
                    spParams   += e.event_id.Split(':').Last() + ",";
                    spParams   += e.product + ",";
                    spParams   += "'" + e.groups?.Trim() + "',";
                    spParams   += e.market_status + ",";
                    spParams   += e.GeneratedAt + ")";
                    cnn.Database.ExecuteSqlCommand(spParams.Trim());

                    dbContextTransaction.Commit();

                    SerilogHelper.Information($"{routeKey} {UtcHelper.GetDifferenceFromTimestamp(e.timestamp) + "ms"}");
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    SerilogHelper.Exception($"Unknown exception in {routeKey} SectionName:{sectionName} SQL:{spParams.Trim()}", ex);
                }
            }
        }
Esempio n. 2
0
        public IBetStop <T> MapBetStop <T>(bet_stop message, IEnumerable <CultureInfo> cultures, byte[] rawMessage) where T : ISportEvent
        {
            Contract.Requires(message != null);
            Contract.Ensures(Contract.Result <IBetStop <T> >() != null);

            return(Contract.Result <IBetStop <T> >());
        }
 /// <summary>
 /// Maps (converts) the provided <see cref="bet_stop" /> instance to the <see cref="IBetStop{T}" /> instance
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="message">A <see cref="bet_stop" /> instance to be mapped (converted)</param>
 /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}" /> specifying the languages to which the mapped message will be translated</param>
 /// <param name="rawMessage">The raw message</param>
 /// <returns>A <see cref="IBetStop{T}" /> instance constructed from information in the provided <see cref="bet_stop" /></returns>
 public IBetStop <T> MapBetStop <T>(bet_stop message, IEnumerable <CultureInfo> cultures, byte[] rawMessage) where T : ISportEvent
 {
     return(new BetStop <T>(
                new MessageTimestamp(message.GeneratedAt, message.SentAt, message.ReceivedAt, SdkInfo.ToEpochTime(DateTime.Now)),
                _producerManager.Get(message.product),
                GetEventForMessage <T>(URN.Parse(message.event_id), message.SportId, cultures),
                message.request_idSpecified ? (long?)message.request_id : null,
                MessageMapperHelper.GetEnumValue(message.market_statusSpecified, message.market_status, MarketStatus.SUSPENDED),
                message.groups?.Split('|'),
                rawMessage));
 }
        private void TestEntityValues(IBetStop <ICompetition> entity, bet_stop record, AssertHelper assertHelper)
        {
            TestEventMessageProperties(assertHelper, entity, record.timestamp, record.product, record.event_id, record.RequestId);

            var recordGroupsCount = record.groups?.Split(new[] { SdkInfo.MarketGroupsDelimiter }, StringSplitOptions.RemoveEmptyEntries).Length ?? 0;
            var entityGroupsCount = entity.Groups?.Count() ?? 0;

            Assert.AreEqual(entityGroupsCount, recordGroupsCount);
            //assertHelper.AreEqual(() => entityGroupsCount, recordGroupsCount);
            assertHelper.AreEqual(() => entity.MarketStatus, MessageMapperHelper.GetEnumValue(record.market_statusSpecified, record.market_status, MarketStatus.SUSPENDED));
        }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsChangeEventArgs{T}"/> class
        /// </summary>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map feed message to the one dispatched to the user</param>
        /// <param name="feedMessage">A <see cref="bet_stop"/> message received from the feed</param>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages to which the received message is translated</param>
        /// <param name="rawMessage">A raw message received from the feed</param>
        internal BetStopEventArgs(IFeedMessageMapper messageMapper, bet_stop feedMessage, IEnumerable <CultureInfo> cultures, byte[] rawMessage)
        {
            Guard.Argument(messageMapper, nameof(messageMapper)).NotNull();
            Guard.Argument(feedMessage, nameof(feedMessage)).NotNull();
            Guard.Argument(cultures, nameof(cultures)).NotNull().NotEmpty();

            _messageMapper   = messageMapper;
            _feedMessage     = feedMessage;
            _defaultCultures = cultures as IReadOnlyCollection <CultureInfo>;
            _rawMessage      = rawMessage;
        }
Esempio n. 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsChangeEventArgs{T}"/> class
        /// </summary>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map feed message to the one dispatched to the user</param>
        /// <param name="feedMessage">A <see cref="bet_stop"/> message received from the feed</param>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages to which the received message is translated</param>
        /// <param name="rawMessage">A raw message received from the feed</param>
        internal BetStopEventArgs(IFeedMessageMapper messageMapper, bet_stop feedMessage, IEnumerable <CultureInfo> cultures, byte[] rawMessage)
        {
            Contract.Requires(messageMapper != null);
            Contract.Requires(feedMessage != null);
            Contract.Requires(cultures != null && cultures.Any());

            _messageMapper   = messageMapper;
            _feedMessage     = feedMessage;
            _defaultCultures = cultures as IReadOnlyCollection <CultureInfo>;
            _rawMessage      = rawMessage;
        }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsChangeEventArgs{T}"/> class
        /// </summary>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map feed message to the one dispatched to the user</param>
        /// <param name="feedMessage">A <see cref="bet_stop"/> message received from the feed</param>
        /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages to which the received message is translated</param>
        /// <param name="rawMessage">A raw message received from the feed</param>
        internal BetStopEventArgs(IFeedMessageMapper messageMapper, bet_stop feedMessage, IEnumerable <CultureInfo> cultures, byte[] rawMessage)
        {
            Guard.Argument(messageMapper, nameof(messageMapper)).NotNull();
            Guard.Argument(feedMessage, nameof(feedMessage)).NotNull();
            Guard.Argument(cultures, nameof(cultures)).NotNull();//.NotEmpty();
            if (!cultures.Any())
            {
                throw new ArgumentOutOfRangeException(nameof(cultures));
            }


            _messageMapper   = messageMapper;
            _feedMessage     = feedMessage;
            _defaultCultures = cultures as IReadOnlyCollection <CultureInfo>;
            _rawMessage      = rawMessage;
        }
Esempio n. 8
0
        /// <summary>
        /// Validates the provided <see cref="bet_stop" /> message
        /// </summary>
        /// <param name="message">The <see cref="bet_stop" /> message to validate</param>
        /// <returns>The <see cref="ValidationResult" /> specifying the result of validation</returns>
        protected ValidationResult ValidateBetStop(bet_stop message)
        {
            Contract.Requires(message != null);

            ValidateMessageProducer(message);

            if (!ValidateMessage(message))
            {
                return(ValidationResult.FAILURE);
            }

            if (string.IsNullOrEmpty(message.groups))
            {
                LogFailure(message, "groups", message.groups);
                return(ValidationResult.FAILURE);
            }
            return(ValidationResult.SUCCESS);
        }
        /// <summary>
        /// Validates the provided <see cref="bet_stop" /> message
        /// </summary>
        /// <param name="message">The <see cref="bet_stop" /> message to validate</param>
        /// <returns>The <see cref="ValidationResult" /> specifying the result of validation</returns>
        protected ValidationResult ValidateBetStop(bet_stop message)
        {
            Guard.Argument(message, nameof(message)).NotNull();

            ValidateMessageProducer(message);

            if (!ValidateMessage(message))
            {
                return(ValidationResult.FAILURE);
            }

            if (string.IsNullOrEmpty(message.groups))
            {
                LogFailure(message, "groups", message.groups);
                return(ValidationResult.FAILURE);
            }
            return(ValidationResult.SUCCESS);
        }
        /// <summary>
        /// Dispatches the <see cref="bet_stop"/> message
        /// </summary>
        /// <param name="message">The <see cref="bet_stop"/> message to dispatch</param>
        /// <param name="rawMessage">A raw message received from the feed</param>
        private void DispatchBetStop(bet_stop message, byte[] rawMessage)
        {
            var eventArgs = new BetStopEventArgs <T>(MessageMapper, message, DefaultCultures, rawMessage);

            Dispatch(OnBetStop, eventArgs, message);
        }