Skip to content
Go to file
Cannot retrieve contributors at this time
87 lines (77 sloc) 4.07 KB
// 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")
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: {
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])
self.dictForPayment.updateValue(confirmationNum, forKey: "payment_confirmation_number")
self.dictForPayment.updateValue(paymentID, forKey: "payment_id")
self.presentController(withName: "PaymentResult", context: self.dictForPayment)
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
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
You can’t perform that action at this time.