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); }
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); }