Пример #1
0
        private DoubleOptTransaction GetDoubleOptTransaction(string mobileNumber, int extraDigit)
        {
            DoubleOptTransaction transaction = null;

            using (var command = DB.ExactDotNet.GetStoredProcCommand("Get_SubscriptionDoubleOptTransaction"))
            {
                DB.ExactUSSD.AddInParameter(command, "@mobileNumber", System.Data.DbType.String, mobileNumber);
                DB.ExactUSSD.AddInParameter(command, "@extradigit", System.Data.DbType.Int32, extraDigit);

                using (var reader = DB.ExactDotNet.ExecuteReader(command))
                {
                    if (reader.Read())
                    {
                        transaction = new DoubleOptTransaction
                        {
                            TransactionID         = reader.GetInt32(0),
                            SubscriptionServiceID = reader.GetInt32(1),
                            Reference             = reader.GetInt32(2),
                            InitialBillingAmount  = reader.GetDecimal(3),
                            InputMechanismID      = reader.GetInt32(4),
                            OverrideMessage       = reader.IsDBNull(5) ? null : reader.GetString(5),
                            ExpiryDateTime        = reader.IsDBNull(6) ? DateTime.Now : reader.GetDateTime(6),
                            TRTransactionID       = reader.GetInt32(7),
                            ShortCode             = reader.IsDBNull(8) ? null : reader.GetString(8),
                            Keyword = reader.IsDBNull(9) ? null : reader.GetString(9),
                        };
                    }
                }
            }

            return(transaction);
        }
Пример #2
0
        private SubscriptionResponse ValidateAndSubscribeRequest(DoubleOptTransaction transaction)
        {
            var response = new SubscriptionResponse();
            SubscriptionHandler handler = new SubscriptionHandler(this.subscriptionServiceID);

            if (transaction != null)
            {
                try
                {
                    InsertDoubleOptTRTransaction(transaction.TRTransactionID, mobileNumber, transaction.SubscriptionServiceID, DoubleOptStatus.Reply_received, InputMechanisms.USSD);

                    if (transaction != null)
                    {
                        InsertDoubleOptTRTransaction(transaction.TRTransactionID, mobileNumber, transaction.SubscriptionServiceID, DoubleOptStatus.Valid_keyword_received, InputMechanisms.USSD);

                        response = handler.Subscribe(mobileNumber, InputMechanisms.USSD, this.Transaction.Keyword, this.Transaction.ShortCode, this.Transaction.Reference);

                        if (response.Status == ServiceMessages.SubscriptionActivated)
                        {
                            InsertDoubleOptTRTransaction(transaction.TRTransactionID, mobileNumber, transaction.SubscriptionServiceID, DoubleOptStatus.Completed, null, response.SubscriptionID, InputMechanisms.USSD);
                            DeleteDoubleoptTransaction(transaction.TransactionID);
                        }
                        else
                        {
                            InsertDoubleOptTRTransaction(transaction.TRTransactionID, mobileNumber, transaction.SubscriptionServiceID, DoubleOptStatus.Exception, string.Format("{0}", response.Exception), response.SubscriptionID, InputMechanisms.USSD);
                        }
                    }
                }
                catch (Exception ex)
                {
                    InsertDoubleOptTRTransaction(transaction.TRTransactionID, mobileNumber, transaction.SubscriptionServiceID, DoubleOptStatus.Exception, ex.Message, null, InputMechanisms.USSD);
                }
            }

            return(response);
        }