Permalink
Cannot retrieve contributors at this time
SynchronyFinancialWatchApp/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PaymentDetailInterfaceController.swift
Go to file// | |
// PaymentDetailInterfaceController.swift | |
// SynchronyFinancial | |
// | |
// Created by Monday on 2019/03/24. | |
// Copyright © 2019 Alan Maynard. All rights reserved. | |
// | |
import WatchKit | |
import Foundation | |
class PaymentDetailInterfaceController: WKInterfaceController { | |
var selectedAccount: Account? | |
var dictForAcct: [String: Account] = [:] | |
var dictForPayment: [String: String] = [:] | |
var paymentButtonArmed: Bool = false | |
var paymentAmount: Double = 0.0 | |
@IBOutlet weak var contentGroup: WKInterfaceGroup! | |
@IBOutlet weak var activityIndicator: WKInterfaceImage! | |
@IBOutlet weak var activityIndicatorLabel: WKInterfaceLabel! | |
@IBOutlet weak var detailButton: WKInterfaceButton! | |
@IBOutlet weak var amount: WKInterfaceLabel! | |
@IBOutlet weak var paymentButton: WKInterfaceButton! | |
override func awake(withContext context: Any?) { | |
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 | |
} | |
self.paymentAmount = amount | |
self.selectedAccount = acct | |
paymentButton.setTitle(String(format: "Pay $%.2f", amount)) | |
} | |
@IBAction func paymentAction() { | |
if paymentButtonArmed { | |
guard let alias = selectedAccount?.accountAlias else { return } | |
let cancel = WKAlertAction(title: "Cancel", style: .cancel, handler: {}) | |
let submit = WKAlertAction(title: "Pay Now", style: .default, handler: { | |
self.contentGroup.setHidden(true) | |
self.activityIndicator.configureForActivityIndicator() | |
self.activityIndicatorLabel.setHidden(false) | |
self.activityIndicatorLabel.setVerticalAlignment(.center) | |
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 | |
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]) | |
return | |
} | |
self.dictForPayment.updateValue(confirmationNum, forKey: "payment_confirmation_number") | |
self.dictForPayment.updateValue(paymentID, forKey: "payment_id") | |
self.activityIndicator.stopAnimatingAsIndicator() | |
self.activityIndicatorLabel.setHidden(true) | |
self.contentGroup.setHidden(false) | |
self.presentController(withName: "PaymentResult", context: self.dictForPayment) | |
self.popToRootController() | |
} | |
}) | |
presentAlert(withTitle: "Disclaimer", message: "By tapping \"Pay Now\", you are authorizing Synchrony Bank to process a one time payment in the amount of \(String(format: "$%.2f", paymentAmount)).", preferredStyle: .actionSheet, actions: [cancel, submit]) | |
} else { | |
animate(withDuration: 0.5) { | |
self.paymentButton.setBackgroundColor(#colorLiteral(red: 0.6092301607, green: 0.9366738796, blue: 0.2432599962, alpha: 1)) | |
self.paymentButtonArmed = true | |
self.paymentButton.setTitle("Pay Now") | |
} | |
} | |
} | |
override func willActivate() { | |
// This method is called when watch view controller is about to be visible to user | |
super.willActivate() | |
} | |
override func didDeactivate() { | |
// This method is called when watch view controller is no longer visible | |
super.didDeactivate() | |
} | |
} |