You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

174 lines
5.8 KiB

//
// 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 ?? "") + " MNT"
self.serviceChargeContentLabel.text = (model.serviceCharge ?? "") + " MNT"
}
}
// 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)
}
}