Example #1
0
        public static async Task <string> TransferFunds(E_Pay_Web_API.Helpers.Transfer_Light transfer)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("https://epay.cobcreditunion.com:443/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var content = new StringContent(JsonConvert.SerializeObject(transfer), Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync(
                "api/Transfers?" +
                "memberId=" + transfer.memid +
                "&pin=" + transfer.pin +
                "&fromAcct=" + transfer.fromAcct +
                "&toAcct=" + transfer.toAccountNumber +
                "&amount=" + transfer.amount.ToString(),
                content
                );

            return(await response.Content.ReadAsAsync <string>());
        }
Example #2
0
        //################################################
        //      LIVE CODE
        //################################################
        //public async Task<string> PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer)
        //################################################

        //################################################
        //      TEST CODE
        //################################################
        public string PostTransfer(E_Pay_Web_API.Helpers.Transfer_Light transfer)
        //################################################
        {
            try
            {
                Guid              fiId          = Guid.Parse(fiIdString);
                string            userId        = User.Identity.GetUserId();
                var               manager       = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(new ApplicationDbContext()));
                ApplicationUser   targetUser    = new ApplicationUser();
                AssociatedAccount targetAccount = new AssociatedAccount();
                switch (transfer.toInfoType)
                {
                case "EmailAddress":
                    targetUser = manager.FindByEmail(transfer.toEmailAddress);
                    if (targetUser == null)
                    {
                        return("The email address provided was invalid. No account found.");
                    }
                    targetAccount = db.AssociatedAccounts.Where(p => p.UserID == targetUser.Id && p.DefaultAccount).FirstOrDefault();
                    break;

                case "AccountNumber":
                    targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.DefaultAccount).FirstOrDefault();
                    targetUser    = manager.FindById(targetAccount.UserID);
                    break;

                case "MyAccount":
                    targetAccount = db.AssociatedAccounts.Where(p => p.AccountNumber.Equals(transfer.toAccountNumber) && p.UserID == userId).FirstOrDefault();
                    targetUser    = manager.FindById(targetAccount.UserID);
                    break;
                }
                //
                var fromAccount = db.AssociatedAccounts.Where(p => p.AssociatedAccountID.ToString() == transfer.fromAcct).First();
                if (targetAccount == null)
                {
                    return("Recipient does not have a default account or the account number provided is invalid.");
                }
                string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First();
                string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId);

                transfer.fromEmailAddress = userId;
                transfer.memid            = fromAccount.MemberID;
                transfer.fromAcct         = fromAccount.AccountNumber;
                transfer.toAccountNumber  = targetAccount.AccountNumber;
                transfer.pin = decryptedPin;

                //################################################
                //      LIVE CODE
                //################################################
                //string transferResponse = await COB.TransferFunds(transfer);
                //char transferResponseCode = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2][1];
                //string transferMessage = transferResponse.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries)[2].Substring(1);
                //################################################

                //################################################
                //      TEST CODE
                //################################################
                string transferMessage = "OKITC";
                //################################################

                db.Transfers.Add(new Transfer
                {
                    SourceInstitutionID = fiId,
                    SourceAccountID     = fromAccount.AssociatedAccountID,
                    SourceAccountNumber = fromAccount.AccountNumber,
                    SourceTransactionID = "",
                    BillerID            = Guid.Parse(fiIdString),
                    BillerAccountNumber = targetAccount.AccountNumber,
                    BillerTransactionID = "",
                    TransferAmount      = (decimal)transfer.amount,
                    TransferDescription = "COB Internal Transfer",
                    Status            = transferMessage.Equals("OKITC") ? "Successful" : "Error",
                    StatusDescription = transferMessage,
                    Created           = DateTime.Now
                });
                db.SaveChanges();

                return(transferMessage);
            }
            catch (Exception ex)
            {
                return("A fatal error has occurred. Please try again later.");
            }
        }