public Task AddAsync(IOrderHistory order, ITrade trade) { return(TransactionWrapperExtensions.RunInTransactionAsync( (conn, transaction) => DoAdd(conn, transaction, order, trade), _connectionString, RollbackExceptionHandler, commitException => CommitExceptionHandler(commitException, order, trade))); }
public async Task AddAsync(IPositionHistory positionHistory, IDeal deal) { await TransactionWrapperExtensions.RunInTransactionAsync( (conn, transaction) => DoAdd(conn, transaction, positionHistory, deal), _connectionString, RollbackExceptionHandler, commitException => CommitExceptionHandler(commitException, positionHistory, deal)); if (deal != null) { Task.Run(async() => { using (var conn = new SqlConnection(_connectionString)) { try { await conn.ExecuteAsync("[dbo].[UpdateDealCommissionParamsOnDeal]", new { deal.DealId, deal.OpenTradeId, deal.OpenOrderVolume, deal.CloseTradeId, deal.CloseOrderVolume, deal.Volume, }, commandType: CommandType.StoredProcedure); } catch (Exception e) { await _log.WriteErrorAsync(nameof(PositionsHistorySqlRepository), nameof(AddAsync), $"Failed to calculate commissions for the deal {deal.DealId}, skipping.", e); } } }); } }