// // WithdrawFromWalletDetailViewController.swift // GME Remit // // Created by Amrit Giri on 7/6/20. //Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit class WithdrawFromWalletDetailViewController: UIViewController { struct StringConstants { let titleText = "bank_deposit_text".localized() let descText = "bank_deposit_detail_text".localized() let bankText = "bank_text".localized() let accountNumberText = "account_number_text".localized() let amountText = "amount_text".localized() let serviceChargeText = "service_charge_text".localized() let confirmText = "confirm_text".localized() } // MARK: Properties var presenter: WithdrawFromWalletDetailModuleInterface? var password: String = ""{ didSet{ if password != ""{ self.presenter?.makeApiRequest(password: self.password) } } } // MARK: IBOutlets @IBOutlet private weak var confirmBtn: UIButton! @IBOutlet private weak var desc: UILabel! @IBOutlet private weak var bankTitleLabel: UILabel! @IBOutlet private weak var bankContentLabel: UILabel! @IBOutlet private weak var acNumberTitleLabel: UILabel! @IBOutlet private weak var acNumberContentLabel: UILabel! @IBOutlet private weak var amountTitleLabel: UILabel! @IBOutlet private weak var amountContentLabel: UILabel! @IBOutlet private weak var serviceChargeTitleLabel: UILabel! @IBOutlet private weak var serviceChargeContentLabel: UILabel! // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setup() self.presenter?.fetchModel() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.title = StringConstants().titleText self.setupNormalNavigation() } // MARK: IBActions @IBAction func confirm(_ sender: Any) { if let isUseBiometric = KeyChain.shared.get(key: .biometricAuth), isUseBiometric == "1" { let biometricAuthenticationWireframe = BiometricAuthenticationWireframe() biometricAuthenticationWireframe.openWithDelegate(on: self, delegate: self) } else { showSecureKeyPad() } } // MARK: Other Functions private func setup() { // all setup should be done here self.configureLanguage() } private func configureLanguage() { desc.text = StringConstants().descText bankTitleLabel.text = StringConstants().bankText acNumberTitleLabel.text = StringConstants().accountNumberText amountTitleLabel.text = StringConstants().amountText serviceChargeTitleLabel.text = StringConstants().serviceChargeText confirmBtn.setTitle(StringConstants().confirmText, for: .normal) } private func showSecureKeyPad() { self.openPasswordInput { (value) in self.password = value } } } // MARK: WithdrawFromWalletDetailViewInterface extension WithdrawFromWalletDetailViewController: WithdrawFromWalletDetailViewInterface { func showLoading() { self.showProgressHud() } func hideLoading() { self.hideProgressHud() } func show(error: String) { self.alert(type: .error, message: error) } func show(message: String) { self.alertWithOk( type: .success, message: message, title: "Success", okTitle: "Ok" ) { self.navigationController?.popToRootViewController(animated: true) } } func setModel(model: WithdrawInformation){ self.bankContentLabel.text = model.bankName ?? "" self.acNumberContentLabel.text = model.accountNo ?? "" self.amountContentLabel.text = (model.amount ?? "") + " JPY" self.serviceChargeContentLabel.text = (model.serviceCharge ?? "") + " JPY" } } // MARK: - BiometricAuthenticationViewControllerDelegate extension WithdrawFromWalletDetailViewController: BiometricAuthenticationViewControllerDelegate { func viewController( _ viewController: BiometricAuthenticationViewController, didFailWithError error: BiometricAuthenticationError, errorMessage: String?) { print("BiometricAuthenticationWireframe Error: \(errorMessage ?? "")") viewController.dismiss(animated: true) { switch error { case .userFallback: self.showSecureKeyPad() case .authenticationFailed, .userCancel, .biometryNotAvailable, .biometryNotEnrolled, .biometryLockout, .notBeConfigured: self.alert(type: .error, message: error.message) } } } func doSelectLocalAuthenticationPolicy( _ viewController: BiometricAuthenticationViewController ) -> BiometricAuthenticationPolicy { return .deviceOwnerAuthenticationWithBiometrics } func didComplete(_ viewController: BiometricAuthenticationViewController) { viewController.dismiss(animated: true) { guard let encryptedPW = KeyChain.shared.get(key: .password) else { MainWireframe.logoutWarningAlert(message: "To use biometrics authentication you have to login again.") return } self.password = encryptedPW } } func viewController( _ viewController: BiometricAuthenticationViewController, informationTitleLabel titleLabel: UILabel, authenticationButton button: UIButton ) { titleLabel.text = "use_biometric_authentication_text".localized() button.setTitle("verify_account_button_text".localized(), for: .normal) } }