diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/FetchData.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/FetchData.swift index 9c218e8..a45a644 100644 --- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/FetchData.swift +++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/FetchData.swift @@ -74,4 +74,37 @@ class FetchData { } } } + + static func fetchTransactionsFor(accountAlias: String, completion: @escaping ([Transaction], Error?) -> Void) { + // get the transaction header and set value for account alias to the selected account + var header = Defaults.headerForTransaction + header["account_alias"] = accountAlias + var transactions: [Transaction] = [] + let formatter = DateFormatter() + formatter.locale = Locale.current + formatter.dateFormat = "yyyyMMdd" + + Alamofire.request(Defaults.TRANS_HISTORY_URL, method: .post, parameters: header, 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 } + + // let's parse just processed transactions for now + dict["processed_transaction_list"]?.arrayValue.forEach { + if let desc = $0["description"].string, + let date = formatter.date(from: $0["transaction_date"].stringValue), + let amountString = $0["transaction_amount"].string, + let amount = Double(amountString) { + let type: TransactionType = $0["payment_amount_type"].stringValue == "" ? .purchase : .reimbursement + transactions.append(Transaction(type: type, amount: amount, merchantID: desc, date: date)) + } + } + completion(transactions, nil) + case .failure(let error): + NSLog("Error: %s", error.localizedDescription) + completion([], error) + } + } + } }