private string BuildDescription(IRampingRuleBreach breach) { var description = $"Ramping rule breach detected for {breach.Security.Name}. {this.RampingStrategySummary(breach.SummaryPanel.OneDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.FiveDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.FifteenDayAnalysis)}{this.RampingStrategySummary(breach.SummaryPanel.ThirtyDayAnalysis)}"; return(description); }
public async Task Send(IRampingRuleBreach breach) { if (breach == null) { this.Logger?.LogInformation("Send received a null rule breach for op ctx. Returning."); return; } var description = this.BuildDescription(breach); await this.Send(breach, description); }
public void Send(IRampingRuleBreach breach) { if (breach == null) { // ReSharper disable once InconsistentlySynchronizedField this._logger.LogInformation("received a null rule breach. Returning."); return; } lock (this._lock) { this._logger.LogInformation($"received rule breach for {breach.Security.Identifiers}"); var duplicates = this._messages.Where(_ => _.Trades.PositionIsSubsetOf(breach.Trades)).ToList(); this._messages = this._messages.Except(duplicates).ToList(); this._messages.Add(breach); } }