private static PaymentProviderQueueItem GetQueueItem(DataContext dbContext, PaymentProvider paymentProvider) { var connection = (OracleConnection)dbContext.Database.Connection; using (var command = new OracleCommand()) { try { if (connection.State != ConnectionState.Open) { connection.Open(); } command.Parameters.Add("P_PAYMENT_PROVIDER_ID", OracleDbType.Int32).Value = paymentProvider; command.Parameters.Add("O_QUEUED_DATA", OracleDbType.RefCursor).Direction = ParameterDirection.Output; ExcecuteNonQuery(command, "finance.PAYMENT_PROVIDER_REQUEST_INFO.GET_NEXT_QUEUED_ENTRY", connection); if ((command.Parameters["O_QUEUED_DATA"].Value == null) || (command.Parameters["O_QUEUED_DATA"].Value is DBNull)) { return(null); } var refCursor = (OracleRefCursor)command.Parameters["O_QUEUED_DATA"].Value; using (var dataReader = refCursor.GetDataReader()) { while (dataReader.Read()) { var paymentProviderQueueItem = new PaymentProviderQueueItem(); paymentProviderQueueItem.ID = long.Parse(dataReader["ID"].ToString()); paymentProviderQueueItem.CreatedTimestamp = DateTime.Parse(dataReader["CREATED_DATE"].ToString()); paymentProviderQueueItem.QueueStatus = (QueueStatus)int.Parse(dataReader["QUEUE_STATUS_ID"].ToString()); paymentProviderQueueItem.Arguments = dataReader["ARGUMENTS"].ToString(); paymentProviderQueueItem.TransactionToken = dataReader["TRANSACTION_TOKEN"].ToString(); paymentProviderQueueItem.OperationName = dataReader["OPERATION_NAME"].ToString(); paymentProviderQueueItem.PaymentProvider = (PaymentProvider)int.Parse(dataReader["PAYMENT_PROVIDER_ID"].ToString()); return(paymentProviderQueueItem); } } } finally { foreach (OracleParameter parameter in command.Parameters) { if (parameter.Value is IDisposable) { ((IDisposable)(parameter.Value)).Dispose(); } parameter.Dispose(); } } } return(null); }
private void InsertQueueItem(DataContext dbContext, PaymentProviderQueueItem paymentProviderQueueItem) { var connection = (OracleConnection)dbContext.Database.Connection; using (var command = new OracleCommand()) { try { if (connection.State != ConnectionState.Open) { connection.Open(); } command.Parameters.Add("P_CREATED_DATE", OracleDbType.Date).Value = paymentProviderQueueItem.CreatedTimestamp; command.Parameters.Add("P_QUEUE_STATUS_ID", OracleDbType.Int32).Value = (int)paymentProviderQueueItem.QueueStatus; command.Parameters.Add("P_ARGUMENTS", OracleDbType.Varchar2).Value = paymentProviderQueueItem.Arguments; command.Parameters.Add("P_TRANSACTION_TOKEN", OracleDbType.Varchar2).Value = paymentProviderQueueItem.TransactionToken; command.Parameters.Add("P_OPERATION_NAME", OracleDbType.Varchar2).Value = paymentProviderQueueItem.OperationName; command.Parameters.Add("P_PAYMENT_PROVIDER_ID", OracleDbType.Int32).Value = (int)paymentProviderQueueItem.PaymentProvider; ExcecuteNonQuery(command, "finance.PAYMENT_PROVIDER_REQUEST_INFO.INSERT_QUEUE", connection); } finally { foreach (OracleParameter parameter in command.Parameters) { if (parameter.Value is IDisposable) { ((IDisposable)(parameter.Value)).Dispose(); } parameter.Dispose(); } } } }