public OnePayTransaction SaveTransaction(TransactionItemDTO transaction, bool status) { try { _transaction = new OnePayTransaction(); _transaction.TransactionId = "T" + RandomNumerGenerator.GetRandomNumber(10); _transaction.TransactionComment = "Transaction from OnePay for AccountId"; _transaction.TransactionAmount = transaction.TransactionAmount; _transaction.UserId = transaction.UserId; _transaction.AccountId = transaction.AccountId; _transaction.PaccountId = transaction.PAccountId; _transaction.TransactionTypeId = transaction.TransactionType; _transaction.TransactionStatusId = (status) ? (int)TransactionStatusTypes.Successful : (int)TransactionStatusTypes.Declined; _transaction.TransactionProvideTypeId = transaction.TransactionProviderType; _transaction.Timestamp = DateTime.Now.ToString(); if (_transaction != null) { _context.OnePayTransaction.Add(_transaction); _context.SaveChanges(); } } catch (AppException ex) { throw new AppException("Transaction not successful", ex.Message); } return(_transaction); }
public void EndTransaction(OnePayTransaction transaction, User user) { //call messaging Service try { _messagingService.SendMessage(user, transaction); } catch (AppException ex) { throw new AppException("Message could not be sent" + ex); } }
public string SendMessage(User user, OnePayTransaction onePayTransaction) { string APIKey = Startup.APIKEY; try { string recipient = user.UserPhoneNumber; string sender = "TXTLCL"; string message = $"{onePayTransaction.TransactionAmount} has been deducted from {onePayTransaction.AccountId}.Message sent by OnePayBank"; string encodedMessage = HttpUtility.UrlEncode(message); var status = ""; using (var webClient = new WebClient()) { // byte[] response = webClient.UploadValues(Startup.APIURL, new NameValueCollection() //{ // {"apikey",APIKey}, // {"numbers",recipient}, // {"message",encodedMessage}, // {"sender",sender}}); // string result = System.Text.Encoding.UTF8.GetString(response); // var jsonObject = JObject.Parse(result); status = "Success"; } if (status == "Success") { SaveMessage(message, recipient, sender, status, user.UserId); } else { SaveMessage(message, recipient, sender, status, user.UserId); } return(status); } catch (AppException) { throw new AppException("Message not Delivered"); } }
public void ExecuteTransaction(TransactionItemDTO transaction, UserAccount userAccount, BusinessProduct bProduct, User user) { bool debitStatus, creditStatus = false; debitStatus = DebitAmount(userAccount.UserId, transaction.AccountId, transaction.TransactionAmount); if (debitStatus) { creditStatus = CreditAmount(userAccount.UserId, transaction.PAccountId, transaction.TransactionAmount); OnePayTransaction transactionObj = null; //call transaction service try { transactionObj = _transactionService.SaveTransaction(transaction, creditStatus); } catch (AppException ex) { throw new AppException("Transaction Not Successful", ex.Message); } if (transactionObj.TransactionId != null) { EndTransaction(transactionObj, user); } } }