From 520d31a8569e21fefa41ce7812a2f8cdc6214724 Mon Sep 17 00:00:00 2001 From: Rahul Kantesaria Date: Mon, 8 Apr 2019 14:09:10 -0400 Subject: [PATCH] Fixed errors from code review. Additionally, moved where fetchBankInfo API request is called so it is fired upon only when user want to change default bank acct. User's default bank account ID is now being used in the makePayment API call. --- .../Base.lproj/Interface.storyboard | 10 ++-- .../BankAcctCell.swift | 4 +- .../PaymentDetailInterfaceController.swift | 47 ++++++++++--------- .../PaymentOptionsInterfaceController.swift | 8 ++-- .../project.pbxproj | 6 +++ .../SynchronyFinancial/BankAcct.swift | 19 ++------ .../UserDefaults+Extensions.swift | 22 +++++++++ 7 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 SynchronyFinancial/SynchronyFinancial/UserDefaults+Extensions.swift diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard index 04b8ba8..4b0c66c 100644 --- a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard +++ b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard @@ -1,12 +1,12 @@ - + - - + + @@ -255,8 +255,8 @@ - - + + diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BankAcctCell.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BankAcctCell.swift index 3f6f92d..cedf8bb 100644 --- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BankAcctCell.swift +++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BankAcctCell.swift @@ -10,6 +10,6 @@ import Foundation import WatchKit class BankAcctCell: NSObject { - @IBOutlet weak var BankNameLabel: WKInterfaceLabel! - @IBOutlet weak var Last4Label: WKInterfaceLabel! + @IBOutlet weak var bankNameLabel: WKInterfaceLabel! + @IBOutlet weak var last4Label: WKInterfaceLabel! } diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentDetailInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentDetailInterfaceController.swift index c683c6f..2b3d33b 100644 --- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentDetailInterfaceController.swift +++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentDetailInterfaceController.swift @@ -16,6 +16,7 @@ class PaymentDetailInterfaceController: WKInterfaceController { var paymentButtonArmed: Bool = false var paymentAmount: Double = 0.0 var dictForBankAcct: [String: [BankAcct]] = [:] + var bankID: String = "" @IBOutlet weak var activityIndicator: WKInterfaceImage! @IBOutlet weak var activityIndicatorLabel: WKInterfaceLabel! @IBOutlet weak var contentGroup: WKInterfaceGroup! @@ -24,25 +25,17 @@ class PaymentDetailInterfaceController: WKInterfaceController { @IBOutlet weak var paymentButton: WKInterfaceButton! @IBOutlet weak var payFrom: WKInterfaceLabel! @IBOutlet weak var separate: WKInterfaceSeparator! + override func awake(withContext context: Any?) { - configureInterfaceObjects(true) - activityIndicator.configureForActivityIndicator() super.awake(withContext: context) + guard let data = context as? [String: Any], let acct = data["acct"] as? Account, let amount = data["payment_amount"] as? Double else { NSLog("Error getting account object and payment amount") return } - FetchData.getBankInfo { accts, error in guard error == nil else { - NSLog("Error retrieving payment methods for account in paymentDetailInterfaceController.") - return - } - self.dictForBankAcct.updateValue(accts, forKey: "paymentOptions") - self.configureInterfaceObjects(false) - //self.detailButton.setTitle("Hello") - self.activityIndicator.stopAnimatingAsIndicator() - } + self.paymentAmount = amount self.selectedAccount = acct @@ -61,7 +54,11 @@ class PaymentDetailInterfaceController: WKInterfaceController { let type: PaymentType = self.paymentAmount == self.selectedAccount?.curBalance ? .currentBal : .minimumDue // process this payment using default bank account (9999) until ability to change account is implemented - FetchData.submitPayment(for: alias, type: type, amount: self.paymentAmount, bankID: "9999") { confirmationNum, paymentID, error in + if let bankacct = UserDefaults.standard.dictionary(forKey: "default_bank_acct") as? [String: String] { + self.bankID = bankacct["bankID"] ?? "9999" + } + + FetchData.submitPayment(for: alias, type: type, amount: self.paymentAmount, bankID: self.bankID) { confirmationNum, paymentID, error in guard error == nil else { let dismiss = WKAlertAction(title: "Dismiss", style: .cancel, handler: {}) self.presentAlert(withTitle: "Error", message: "We were unable to process your payment at this time. Please try again later.", preferredStyle: .alert, actions: [dismiss]) @@ -87,7 +84,19 @@ class PaymentDetailInterfaceController: WKInterfaceController { } @IBAction func bankAccountsTapped() { - self.pushController(withName: "PaymentOptions", context: self.dictForBankAcct) + configureInterfaceObjects(true) + activityIndicator.configureForActivityIndicator() + FetchData.getBankInfo { accts, error in guard error == nil else { + NSLog("Error retrieving payment methods for account in paymentDetailInterfaceController.") + return + } + self.dictForBankAcct.updateValue(accts, forKey: "paymentOptions") + self.configureInterfaceObjects(false) + //self.detailButton.setTitle("Hello") + self.activityIndicator.stopAnimatingAsIndicator() + self.pushController(withName: "PaymentOptions", context: self.dictForBankAcct) + } + } override func willActivate() { @@ -109,14 +118,8 @@ class PaymentDetailInterfaceController: WKInterfaceController { paymentButton.setHidden(hide) payFrom.setHidden(hide) separate.setHidden(hide) - contentGroup.setHidden(hide) - /*if(!hide){ - if let p1 = self.dictForBankAcct["paymentOptions"] { - let x = p1[0] - UserDefaults.standard.set(x, forKey: "default_bank_acct") - print("yes") - detailButton.setTitle(p1[0].bankName) - } - }*/ + contentGroup.setHidden(hide) + activityIndicatorLabel.setVerticalAlignment(.center) + activityIndicatorLabel.setHidden(!hide) } } diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentOptionsInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentOptionsInterfaceController.swift index c2b99eb..ee6af02 100644 --- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentOptionsInterfaceController.swift +++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentOptionsInterfaceController.swift @@ -36,19 +36,19 @@ class PaymentOptionsInterfaceController: WKInterfaceController { bankAcctTable.setNumberOfRows(bankAccts.count, withRowType: "bankAcctCell") for index in 0.. BankAcct? { - if let bank = UserDefaults.standard.value(forKey: "default_bank_acct") as? BankAcct { - return bank - } - - return nil - } -} diff --git a/SynchronyFinancial/SynchronyFinancial/UserDefaults+Extensions.swift b/SynchronyFinancial/SynchronyFinancial/UserDefaults+Extensions.swift new file mode 100644 index 0000000..6e63dcf --- /dev/null +++ b/SynchronyFinancial/SynchronyFinancial/UserDefaults+Extensions.swift @@ -0,0 +1,22 @@ +// +// UserDefaults+Extensions.swift +// SynchronyFinancial +// +// Created by Rahul Kantesaria on 4/8/19. +// Copyright © 2019 Alan Maynard. All rights reserved. +// + +import Foundation + +extension UserDefaults { + func setDefaultBankAccount(_ acct: BankAcct) { + UserDefaults.standard.set(acct, forKey: "default_bank_acct") + } + + func getDefaultBankAccount() -> BankAcct? { + if let bank = UserDefaults.standard.value(forKey: "default_bank_acct") as? BankAcct { + return bank + } + return nil + } +}