diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
index 26db9cf..492ace8 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit App/Base.lproj/Interface.storyboard
@@ -99,11 +99,13 @@
-
+
+
+
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountCell.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountCell.swift
index 8bba624..55d6587 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountCell.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountCell.swift
@@ -11,4 +11,5 @@ import WatchKit
class AccountCell: NSObject {
@IBOutlet weak var accountName: WKInterfaceLabel!
+ @IBOutlet weak var last4Label: WKInterfaceLabel!
}
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountTableInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountTableInterfaceController.swift
index 6f06f1a..72518cd 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountTableInterfaceController.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/AccountTableInterfaceController.swift
@@ -48,6 +48,7 @@ class AccountTableInterfaceController: WKInterfaceController {
for index in 0.. Void) {
+ var bankIds: [BankAcct] = []
+ Alamofire.request(Defaults.FETCH_BANKS_URL, method: .post, parameters: Defaults.headerForMulti, encoding: JSONEncoding.default, headers: Defaults.authHeader).responseJSON { payload in
+ switch payload.result {
+ case .success(let value):
+ let dict = JSON(value).dictionaryValue
+ //print(dict)
+ guard dict["status"]?.dictionaryValue["response_code"]?.string == "0" else {return }
+ //"fetch_bank_account_details"
+ dict["fetch_bank_account_details"]?.arrayValue.forEach {
+ if let bankId = $0["bank_account_id"].string,
+ let accttype: AccountType = $0["bank_account_type"].stringValue ==
+ "C" ? .checkings : .savings {
+ //print(bankId)
+ //print(accttype)
+ bankIds.append(BankAcct(bankAcctId: bankId, acctType: accttype))
+ }
+ }
+ completion(bankIds, nil)
+ case .failure(let error):
+ NSLog("Error: %s", error.localizedDescription)
+ completion([], error)
+ }
+ }
+ }
+
+ static func cancelPayment(accountAlias: String, confirmationNum: String, paymentId: Int, completion: @escaping (String, Error?) -> Void){
+
+ var paymentHeader = Defaults.headerForCancelPmt
+ paymentHeader["account_alias"] = accountAlias
+ paymentHeader["payment_confirmation_number"] = confirmationNum
+ paymentHeader["payment_id"] = paymentId
+
+ Alamofire.request(Defaults.CANCEL_PAYMENT_URL, method: .post, parameters: paymentHeader, encoding: JSONEncoding.default, headers: Defaults.authHeader).responseJSON { payload in
+ switch payload.result {
+ case .success(let value):
+ let dict = JSON(value).dictionaryValue
+ guard dict["status"]?.dictionaryValue["response_code"]?.string == "0" else { return }
+ if let paymentCancelNum = dict["cancellation_confirmation_number"]?.stringValue {
+ completion(paymentCancelNum, nil)
+ }
+ case .failure(let error):
+ NSLog("Error: \(error.localizedDescription)")
+ }
+ }
+ }
static func submitPayment(for alias: String, type: String, amount: Double, bankID: String, completion: @escaping (String, String, Error?) -> Void) {
var paymentHeader = Defaults.headerForPmt
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
index 5f3e709..93689b4 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/TransactionsInterfaceController.swift
@@ -44,7 +44,8 @@ class TransactionsInterfaceController: WKInterfaceController {
if let row = transactionsTable.rowController(at: index) as? TransactionCell {
row.transactionLabel.setText(transactions[index].merchantID)
row.valueLabel.setText(String(format: "$%.2f", transactions[index].amount))
- row.valueLabel.setTextColor(transactions[index].type == .purchase ? UIColor.red : UIColor.green)
+ row.valueLabel.setTextColor(transactions[index].isPending == true ? UIColor.yellow :
+ (transactions[index].type == .purchase ? UIColor.red : UIColor.green))
}
}
}
diff --git a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
index 8aa6464..ceb6fe6 100644
--- a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
+++ b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
@@ -8,6 +8,8 @@
/* Begin PBXBuildFile section */
1123372E223ABD6400B70925 /* FetchData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1123372D223ABD6400B70925 /* FetchData.swift */; };
+ 11E6ADB92253FA050009922E /* BankAcct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E6ADB82253FA050009922E /* BankAcct.swift */; };
+ 11E6ADBA225401DB0009922E /* BankAcct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E6ADB82253FA050009922E /* BankAcct.swift */; };
281283568A34D3C5D9C7B383 /* libPods-SynchronyFinancial WatchKit Extension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CAA6D46F907ADAABF49FD409 /* libPods-SynchronyFinancial WatchKit Extension.a */; };
481864A9224802BB0059CF7A /* PaymentDetailInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 481864A7224802BB0059CF7A /* PaymentDetailInterfaceController.swift */; };
48DA0058221D12E70081A500 /* AccountCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48DA0057221D12E70081A500 /* AccountCell.swift */; };
@@ -85,6 +87,7 @@
/* Begin PBXFileReference section */
1123372D223ABD6400B70925 /* FetchData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchData.swift; sourceTree = ""; };
+ 11E6ADB82253FA050009922E /* BankAcct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BankAcct.swift; sourceTree = ""; };
1BEF4B8BF190D117CA6104E5 /* Pods-SynchronyFinancial WatchKit App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SynchronyFinancial WatchKit App.release.xcconfig"; path = "Pods/Target Support Files/Pods-SynchronyFinancial WatchKit App/Pods-SynchronyFinancial WatchKit App.release.xcconfig"; sourceTree = ""; };
250BDAF6AD4E1CCA82995E30 /* Pods-SynchronyFinancial WatchKit Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SynchronyFinancial WatchKit Extension.release.xcconfig"; path = "Pods/Target Support Files/Pods-SynchronyFinancial WatchKit Extension/Pods-SynchronyFinancial WatchKit Extension.release.xcconfig"; sourceTree = ""; };
396A16E056D05DEC937A07DA /* Pods-SynchronyFinancial.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SynchronyFinancial.release.xcconfig"; path = "Pods/Target Support Files/Pods-SynchronyFinancial/Pods-SynchronyFinancial.release.xcconfig"; sourceTree = ""; };
@@ -178,8 +181,9 @@
children = (
48F2430B2214CBF700B9C894 /* Account.swift */,
48F2430C2214CBF700B9C894 /* Transaction.swift */,
- 67E17B85223812C2008871FE /* Defaults.swift */,
67BAC268219E254700713FEF /* AppDelegate.swift */,
+ 11E6ADB82253FA050009922E /* BankAcct.swift */,
+ 67E17B85223812C2008871FE /* Defaults.swift */,
67BAC26C219E254700713FEF /* Main.storyboard */,
67BAC26F219E254800713FEF /* Assets.xcassets */,
67BAC271219E254800713FEF /* LaunchScreen.storyboard */,
@@ -469,6 +473,8 @@
674BD1532239A39D0076AFD6 /* PayBillInterfaceController.swift in Sources */,
48F2430D2214CBF700B9C894 /* Account.swift in Sources */,
678C388622309F7D00FEAAF6 /* AccountCell.swift in Sources */,
+ 481864A8224802BB0059CF7A /* PaymentDetailInterfaceController.swift in Sources */,
+ 11E6ADB92253FA050009922E /* BankAcct.swift in Sources */,
48F2430E2214CBF700B9C894 /* Transaction.swift in Sources */,
67BAC269219E254700713FEF /* AppDelegate.swift in Sources */,
);
@@ -478,6 +484,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 11E6ADBA225401DB0009922E /* BankAcct.swift in Sources */,
678C3885223098C400FEAAF6 /* Account.swift in Sources */,
67BAC28E219E254900713FEF /* ExtensionDelegate.swift in Sources */,
674BD1542239A39D0076AFD6 /* PayBillInterfaceController.swift in Sources */,
diff --git a/SynchronyFinancial/SynchronyFinancial/Account.swift b/SynchronyFinancial/SynchronyFinancial/Account.swift
index 21875b7..f44c8a6 100644
--- a/SynchronyFinancial/SynchronyFinancial/Account.swift
+++ b/SynchronyFinancial/SynchronyFinancial/Account.swift
@@ -10,6 +10,7 @@ import Foundation
class Account: NSObject {
var accountAlias: String
var creditLimit: Double
+ var last4: String
//var transactions: [Transaction]
var paymentDueDate: Date
//var cycleEndDate: Date
@@ -20,9 +21,10 @@ class Account: NSObject {
var statementBal: Double
var accountName: String
- init(accountAlias: String, creditLimit: Double, paymentDueDate: Date, curBalance: Double, availCredit: Double, minPayDue: Double, statementBal: Double, accountName: String) {
+ init(_ accountAlias: String, _ creditLimit: Double, _ last4: String, _ paymentDueDate: Date, _ curBalance: Double, _ availCredit: Double, _ minPayDue: Double, _ statementBal: Double, _ accountName: String) {
self.accountAlias = accountAlias
self.creditLimit = creditLimit
+ self.last4 = last4
//self.transactions = transactions
//self.balance = transactions.map { $0.amount }.reduce(0.0, +)
self.paymentDueDate = paymentDueDate
diff --git a/SynchronyFinancial/SynchronyFinancial/BankAcct.swift b/SynchronyFinancial/SynchronyFinancial/BankAcct.swift
new file mode 100644
index 0000000..ea16335
--- /dev/null
+++ b/SynchronyFinancial/SynchronyFinancial/BankAcct.swift
@@ -0,0 +1,23 @@
+//
+// Banks.swift
+// SynchronyFinancial
+//
+// Created by Rahul Kantesaria on 4/2/19.
+// Copyright © 2019 Alan Maynard. All rights reserved.
+//
+
+import Foundation
+
+public enum AccountType: Int {
+ case checkings = 0
+ case savings = 1
+}
+
+class BankAcct: NSObject {
+ var bankAcctId: String
+ var acctType: AccountType
+ init(bankAcctId: String, acctType: AccountType) {
+ self.bankAcctId = bankAcctId
+ self.acctType = acctType
+ }
+}
diff --git a/SynchronyFinancial/SynchronyFinancial/Transaction.swift b/SynchronyFinancial/SynchronyFinancial/Transaction.swift
index 7975d90..71c58b0 100644
--- a/SynchronyFinancial/SynchronyFinancial/Transaction.swift
+++ b/SynchronyFinancial/SynchronyFinancial/Transaction.swift
@@ -17,11 +17,20 @@ class Transaction: NSObject {
var amount: Double
var merchantID: String
var date: Date
+ var confirmationNum: String
+ var paymentId: Int
+ var isPending: Bool
+ var isModifiable: Bool
- init(type: TransactionType, amount: Double, merchantID: String, date: Date) {
+ init(type: TransactionType, amount: Double, merchantID: String, date: Date,
+ confirmationNum: String? = nil, paymentId: Int? = nil, isPending: Bool? = nil, isModifiable: Bool? = nil) {
self.type = type
self.amount = amount
self.merchantID = merchantID
self.date = date
+ self.confirmationNum = confirmationNum ?? ""
+ self.paymentId = paymentId ?? 0
+ self.isPending = isPending ?? false
+ self.isModifiable = isModifiable ?? false
}
}