public async Task <bool> TryInsertAsync(ITradingInstrument tradingInstrument) { using (var conn = new SqlConnection(_connectionString)) { try { if (null != await conn.QueryFirstOrDefaultAsync <TradingInstrumentEntity>( $"SELECT * FROM {TableName} WHERE TradingConditionId=@tradingConditionId AND Instrument=@assetPairId", new { tradingConditionId = tradingInstrument.TradingConditionId, assetPairId = tradingInstrument.Instrument })) { return(false); } await conn.ExecuteAsync( $"insert into {TableName} ({GetColumns}) values ({GetFields})", _convertService.Convert <ITradingInstrument, TradingInstrumentEntity>(tradingInstrument)); } catch (Exception ex) { _log?.WriteWarningAsync(nameof(AssetPairsRepository), nameof(TryInsertAsync), $"Failed to insert a trading instrument with assetPairId {tradingInstrument.Instrument} and tradingConditionId {tradingInstrument.TradingConditionId}", ex); return(false); } return(true); } }
private (decimal MarginInit, decimal MarginMaintenance) GetMargins(ITradingInstrument tradingInstrument, decimal volumeForCalculation, decimal marginRate, bool isWarnCheck = false) { var(marginInit, marginMaintenance) = _tradingInstrumentsCache.GetMarginRates(tradingInstrument, isWarnCheck); return(volumeForCalculation * marginRate * marginInit, volumeForCalculation *marginRate *marginMaintenance); }
public async Task UpdateAsync(ITradingInstrument tradingInstrument) { using (var conn = new SqlConnection(_connectionString)) { await conn.ExecuteAsync( $"update {TableName} set {GetUpdateClause} where TradingConditionId=@TradingConditionId AND Instrument=@Instrument", _convertService.Convert <ITradingInstrument, TradingInstrumentEntity>(tradingInstrument)); } }