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); } } }
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)); }
/// <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; }
/// <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; }
/// <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; }
/// <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); }