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);
        }
示例#2
0
        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();
                    }
                }
            }
        }