From 5f5ee27827182289382d0f08c64137ee24058799 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 24 May 2019 15:13:10 +0900 Subject: [PATCH 1/4] when transaction money, chage activity inticator base parent. viewcontroller -> viewcontroller's root( tabbarcontroller ) --- .../View/Cell/RewardItemCollectionViewCell.swift | 2 +- .../User Interface/View/SendMoneyParentViewController.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GMERemittance/Module/RewardModules/Reward/User Interface/View/Cell/RewardItemCollectionViewCell.swift b/GMERemittance/Module/RewardModules/Reward/User Interface/View/Cell/RewardItemCollectionViewCell.swift index e0eaa0ac..cfce398e 100644 --- a/GMERemittance/Module/RewardModules/Reward/User Interface/View/Cell/RewardItemCollectionViewCell.swift +++ b/GMERemittance/Module/RewardModules/Reward/User Interface/View/Cell/RewardItemCollectionViewCell.swift @@ -56,7 +56,7 @@ class RewardItemCollectionViewCell: UICollectionViewCell { let totalPoint = UserDefaults.standard.integer(forKey: UserKeys.rewardPoint) - let isEnable = totalPoint > Int(self.model?.pointPrice ?? "") ?? 0 + let isEnable = totalPoint >= Int(self.model?.pointPrice ?? "") ?? 0 self.redeemButton.backgroundColor = isEnable ? AppConstants.themeRedColor : .lightGray self.redeemButton.isEnabled = isEnable diff --git a/GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift b/GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift index f9a21c21..d97bb410 100644 --- a/GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift +++ b/GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift @@ -297,11 +297,11 @@ extension SendMoneyParentViewController: SendMoneyParentViewInterface { extension SendMoneyParentViewController: HUDStatusDelegate { func showLoading() { - self.showProgressHud() + self.tabBarController?.showProgressHud() } func hideLoading() { - self.hideProgressHud() + self.tabBarController?.hideProgressHud() } } From 105bab5fc3ec3bd957fcd6275b236af5072ec411 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 24 May 2019 15:39:42 +0900 Subject: [PATCH 2/4] when occured network error, failure message send to host --- GMERemittance/Extension/DataRequestExtension.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/GMERemittance/Extension/DataRequestExtension.swift b/GMERemittance/Extension/DataRequestExtension.swift index 08dbf14b..cb837462 100644 --- a/GMERemittance/Extension/DataRequestExtension.swift +++ b/GMERemittance/Extension/DataRequestExtension.swift @@ -48,6 +48,7 @@ extension DataRequest { MainWireframe.logoutWarningAlert(message: "You will be logout because you are connected from another device.") return } + failure(error) } } } From 258e03d947fa161dc77b4b1a3508104fa62e4bb6 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 24 May 2019 15:54:06 +0900 Subject: [PATCH 3/4] change keyboard as number key of account field --- .../User Interface/View/SendMoneyPaymentMode.storyboard | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard b/GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard index 2be7dcab..f23db2c3 100644 --- a/GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard +++ b/GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard @@ -192,11 +192,11 @@ - + - + From 7f5ef7f688aa7ae898dd2c7c3bb80a21cc729826 Mon Sep 17 00:00:00 2001 From: james Date: Mon, 27 May 2019 11:07:08 +0900 Subject: [PATCH 4/4] add validate logic for use biometric authentication at Autodebit --- .../SendMoneyVerificationInteractor.swift | 9 +- .../SendMoneyVerificationServiceType.swift | 4 +- .../SendMoneyVerificationViewController.swift | 814 +++++++++--------- 3 files changed, 416 insertions(+), 411 deletions(-) diff --git a/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift b/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift index 50ee95f5..7d57a8ac 100644 --- a/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift +++ b/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift @@ -59,15 +59,15 @@ extension SendMoneyVerificationInteractor: SendMoneyVerificationInteractorInput return Notification.Name.init(AppConstants.yearlyLimitNotification) } - func getParams(model: SendMoneyRequestModel, reciepient: Recipient) -> [String: String] { + func getParams(model: SendMoneyRequestModel, reciepient: Recipient) -> [String: Any] { let _default = UserDefaults.standard guard let username = _default.value(forKey: UserKeys.userId) as? String else {return [:]} let senderId = _default.value(forKey: UserKeys.senderId) as? String let recieverId = reciepient.recipientId - - - let params: [String: String] = + let isUseBiometric = KeyChain.shared.get(key: .biometricAuth) == "1" ? true : false + + let params: [String: Any] = [ "user": username, "senderId": senderId ?? "", @@ -104,6 +104,7 @@ extension SendMoneyVerificationInteractor: SendMoneyVerificationInteractorInput "txnPassword": model.transactionPassword ?? "", "ReceiverAccountNo": model.paymemtMode?.accountNumber ?? "", "KftcLogId": model.autoDebitAccount?.kftcLogId ?? "", + "isUseBiometric": isUseBiometric ] return params diff --git a/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift b/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift index f0a5d2f4..9a3d9de4 100644 --- a/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift +++ b/GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift @@ -14,12 +14,12 @@ protocol SendMoneyVerificationServiceType: class, SendMoneyVerificationSubmitApi protocol SendMoneyVerificationSubmitApi: ApiServiceType { - func submit(params: [String: String], success: @escaping (SendMoneySubmitModelContainer?) -> (), failure: @escaping (Error) -> ()) + func submit(params: [String: Any], success: @escaping (SendMoneySubmitModelContainer?) -> (), failure: @escaping (Error) -> ()) } extension SendMoneyVerificationSubmitApi { - func submit(params: [String: String], success: @escaping (SendMoneySubmitModelContainer?) -> (), failure: @escaping (Error) -> ()) { + func submit(params: [String: Any], success: @escaping (SendMoneySubmitModelContainer?) -> (), failure: @escaping (Error) -> ()) { let url = baseUrl + "/mobile/sendmoney/dotransaction" self.auth.request(method: .post, url: url, params: params, success: { (response: SendMoneySubmitModelContainer) in if (response.errorCode ?? "") == "1" { diff --git a/GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift b/GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift index b3fa5a67..e1adadc0 100644 --- a/GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift +++ b/GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift @@ -9,430 +9,434 @@ import UIKit class SendMoneyVerificationViewController: UITableViewController { - - struct StringConstants { - let recieverDetails = "reciever_details_text".localized() - let transactionDetails = "transaction_detail_text".localized() - let readNAgreeText = "i_have_read_to_text".localized() - let userAgreementText = "gme_user_aggreement_text".localized() - let agreeAndSendText = "agree_and_send_text".localized() - } - - // MARK: IBOutlets - - // Recievers Details - @IBOutlet weak var fullNameLabel: UILabel! - @IBOutlet weak var addressLabel: UILabel! - @IBOutlet weak var countryLabel: UILabel! - @IBOutlet weak var mobileLabel: UILabel! - - @IBOutlet weak var fullNameTitleLabel: UILabel! - @IBOutlet weak var addressTitleLabel: UILabel! - @IBOutlet weak var countryTitleLabel: UILabel! - @IBOutlet weak var mobileTitleLabel: UILabel! - - // Transation Details - @IBOutlet weak var payoutCountryLabel: UILabel! - @IBOutlet weak var payoutModeLabel: UILabel! - @IBOutlet weak var payingAmountLabel: UILabel! - @IBOutlet weak var exchangeRateLabel: UILabel! - @IBOutlet weak var serviceChargeLabel: UILabel! - @IBOutlet weak var payoutAgentBankLabel: UILabel! - @IBOutlet weak var accountNoLabel: UILabel! - - @IBOutlet weak var payoutCountryTitleLabel: UILabel! - @IBOutlet weak var payoutModeTitleLabel: UILabel! - @IBOutlet weak var payingAmountTitleLabel: UILabel! - @IBOutlet weak var exchangeRateTitleLabel: UILabel! - @IBOutlet weak var serviceChargeTitleLabel: UILabel! - @IBOutlet weak var payoutAgentBankTitleLabel: UILabel! - @IBOutlet weak var accountNumTitlelabel: UILabel! - - // title labels - @IBOutlet weak var recieverDetailsLabel: UILabel! - @IBOutlet weak var transactionDetailsLabel: UILabel! - @IBOutlet weak var readAndAgreeTextLabel: UILabel! - @IBOutlet weak var userAgreementButton: UIButton! - @IBOutlet weak var agreeAndSendButton: UIButton! - - @IBOutlet weak var bankNameStackView: UIStackView! - @IBOutlet weak var accountNumberStackView: UIStackView! - - var url: String? - - - // MARK: Keyoboard Properties - - var mQwertyTransKeyView : TransKeyView! - var mNumberTransKeyView : TransKeyView! - - var secureKey : NSData! - var numberCipherString : String! - var qwertyCipherString : String! - - var isTranskeyShowing : Bool! - var isShowQwerty : Bool! - var isShowNumber : Bool! - - var isUsingBiometricAuth = false - - var encryptedText: String! { - didSet { - if mQwertyTransKeyView?.mTK_GetDataLength() != 0 { - } - } - } - var encryptedNumber: String! { - didSet { - if mNumberTransKeyView.mTK_GetDataLength() != 0 { - } - } - } - - // MARK: Properties - - var presenter: SendMoneyVerificationModuleInterface? - var reciepient: Recipient? - var requestModel: SendMoneyRequestModel? - var hudDelegate: HUDStatusDelegate? - - - var password: String? { - didSet { - if let model = self.requestModel, let reciepient = self.reciepient { - - model.transactionPassword = password ?? "" - self.presenter?.submit(model: model, reciepient: reciepient) - } - } - } - - // MARK: VC's Life cycle - override func viewDidLoad() { - super.viewDidLoad() - self.keyboardSetup() - self.setup() - self.configureLanguage() - - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationItem.title = "resend_money_text".localized() - populateRecieversInformations() - populateTransactionDetails() - mQwertyTransKeyView?.delegate = self - mNumberTransKeyView?.delegate = self - self.bankNameStackView.isHidden = (self.requestModel?.bank?.name ?? "").isEmpty - self.accountNumberStackView.isHidden = (self.requestModel?.paymemtMode?.accountNumber ?? "").isEmpty + + struct StringConstants { + let recieverDetails = "reciever_details_text".localized() + let transactionDetails = "transaction_detail_text".localized() + let readNAgreeText = "i_have_read_to_text".localized() + let userAgreementText = "gme_user_aggreement_text".localized() + let agreeAndSendText = "agree_and_send_text".localized() + } + + // MARK: IBOutlets + + // Recievers Details + @IBOutlet weak var fullNameLabel: UILabel! + @IBOutlet weak var addressLabel: UILabel! + @IBOutlet weak var countryLabel: UILabel! + @IBOutlet weak var mobileLabel: UILabel! + + @IBOutlet weak var fullNameTitleLabel: UILabel! + @IBOutlet weak var addressTitleLabel: UILabel! + @IBOutlet weak var countryTitleLabel: UILabel! + @IBOutlet weak var mobileTitleLabel: UILabel! + + // Transation Details + @IBOutlet weak var payoutCountryLabel: UILabel! + @IBOutlet weak var payoutModeLabel: UILabel! + @IBOutlet weak var payingAmountLabel: UILabel! + @IBOutlet weak var exchangeRateLabel: UILabel! + @IBOutlet weak var serviceChargeLabel: UILabel! + @IBOutlet weak var payoutAgentBankLabel: UILabel! + @IBOutlet weak var accountNoLabel: UILabel! + + @IBOutlet weak var payoutCountryTitleLabel: UILabel! + @IBOutlet weak var payoutModeTitleLabel: UILabel! + @IBOutlet weak var payingAmountTitleLabel: UILabel! + @IBOutlet weak var exchangeRateTitleLabel: UILabel! + @IBOutlet weak var serviceChargeTitleLabel: UILabel! + @IBOutlet weak var payoutAgentBankTitleLabel: UILabel! + @IBOutlet weak var accountNumTitlelabel: UILabel! + + // title labels + @IBOutlet weak var recieverDetailsLabel: UILabel! + @IBOutlet weak var transactionDetailsLabel: UILabel! + @IBOutlet weak var readAndAgreeTextLabel: UILabel! + @IBOutlet weak var userAgreementButton: UIButton! + @IBOutlet weak var agreeAndSendButton: UIButton! + + @IBOutlet weak var bankNameStackView: UIStackView! + @IBOutlet weak var accountNumberStackView: UIStackView! + + var url: String? + + + // MARK: Keyoboard Properties + + var mQwertyTransKeyView : TransKeyView! + var mNumberTransKeyView : TransKeyView! + + var secureKey : NSData! + var numberCipherString : String! + var qwertyCipherString : String! + + var isTranskeyShowing : Bool! + var isShowQwerty : Bool! + var isShowNumber : Bool! + + var isUsingBiometricAuth = false + + var encryptedText: String! { + didSet { + if mQwertyTransKeyView?.mTK_GetDataLength() != 0 { + } + } + } + var encryptedNumber: String! { + didSet { + if mNumberTransKeyView.mTK_GetDataLength() != 0 { + } + } + } + + // MARK: Properties + + var presenter: SendMoneyVerificationModuleInterface? + var reciepient: Recipient? + var requestModel: SendMoneyRequestModel? + var hudDelegate: HUDStatusDelegate? + + + var password: String? { + didSet { + if let model = self.requestModel, let reciepient = self.reciepient { - - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - mQwertyTransKeyView?.mTK_ClearDelegateSubviews() - mNumberTransKeyView?.mTK_ClearDelegateSubviews() - if isTranskeyShowing == false{ - mQwertyTransKeyView?.delegate = nil; - mNumberTransKeyView?.delegate = nil; - } - } - - override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - return UITableViewAutomaticDimension - } - - override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - return 200 - } - - // MARK: IBActions - @IBAction func showUserAgreement(_ sender: UIButton) { - let webController = UIStoryboard.init(name: "Storyboard", bundle: nil).instantiateViewController(withIdentifier: "WebLinksViewController") as! WebLinksViewController - webController.titleString = "User Agreement" - webController.url = self.url ?? "https://online.gmeremit.com/Terms" - let nav = UINavigationController.init(rootViewController: webController) - self.present(nav, animated: true, completion: nil) - } - - @IBAction func submit(_ sender: UIButton) { - self.askPassword() - } - // MARK: Other Functions - - private func setup() { - configureLanguage() - } - - private func configureLanguage() { - self.fullNameTitleLabel.text = "full_name_text".localized() - self.addressTitleLabel.text = "address_text".localized() - self.countryTitleLabel.text = "country_text".localized() - self.mobileTitleLabel.text = "mobile_text".localized() - self.payoutCountryTitleLabel.text = "payout_country_text".localized() - self.payoutModeTitleLabel.text = "payout_mode_text".localized() - self.payingAmountTitleLabel.text = "paying_amount_text".localized() - self.exchangeRateTitleLabel.text = "exchange_rate_text".localized() - self.serviceChargeTitleLabel.text = "service_charge_text".localized() - self.payoutAgentBankTitleLabel.text = "payout_agent_text".localized() - self.recieverDetailsLabel.text = StringConstants().recieverDetails - self.transactionDetailsLabel.text = StringConstants().transactionDetails - self.readAndAgreeTextLabel.text = StringConstants().readNAgreeText - self.userAgreementButton.setTitle(StringConstants().userAgreementText, for: .normal) - self.agreeAndSendButton.setTitle(StringConstants().agreeAndSendText - , for: .normal) - } - - - - private func keyboardSetup() { - isShowNumber = false - isShowQwerty = false - isTranskeyShowing = false - let iv: Array = ["M", "o", "b", "i", "l", "e", "T", "r" , "a", "n", "s", "K", "e", "y", "1", "0"] - secureKey = NSData(bytes: iv, length: 16) - setQwertyTranskey() - setNumberTranskey() - } - - private func setQwertyTranskey(){ - mQwertyTransKeyView = TransKeyView() - mQwertyTransKeyView?.mTK_Init(self) - mQwertyTransKeyView?.delegate = self - mQwertyTransKeyView?.mTK_MakeSecureKey() - mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) - mQwertyTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531") - } - - private func setNumberTranskey(){ - mNumberTransKeyView = TransKeyView() - mNumberTransKeyView?.mTK_Init(self) - mNumberTransKeyView?.delegate = self - mNumberTransKeyView?.mTK_MakeSecureKey() - mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) - mNumberTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531") - } - - private func populateRecieversInformations() { - self.fullNameLabel.text = self.reciepient?.getFullName() - self.addressLabel.text = self.reciepient?.address - self.countryLabel.text = self.reciepient?.country - self.mobileLabel.text = self.reciepient?.mobileNumber - } - - private func populateTransactionDetails() { - self.payoutCountryLabel.text = self.reciepient?.country - self.payoutModeLabel.text = self.requestModel?.paymemtMode?.mode - self.payingAmountLabel.text = (self.requestModel?.exchangeRateDetail?.recipientAmount ?? "") + " \(self.requestModel?.exchangeRateDetail?.reciepientCurrency ?? "")" - self.exchangeRateLabel.text = self.requestModel?.exchangeRateDetail?.exchangeRate - self.serviceChargeLabel.text = self.requestModel?.exchangeRateDetail?.transferFee - self.payoutAgentBankLabel.text = self.requestModel?.bank?.name - self.accountNoLabel.text = self.requestModel?.paymemtMode?.accountNumber - } - - func askPassword() { - - if (self.requestModel?.autoDebitAccount?.type ?? "").lowercased() == "wallet" { - - if let isUseBiometricAuth = KeyChain.shared.get(key: .biometricAuth), isUseBiometricAuth == "1" { - let biometricAuthenticationWireframe = BiometricAuthenticationWireframe() - biometricAuthenticationWireframe.openWithDelegate(on: self, delegate: self) - } else { - showQwertyTranskeyAction() - } - - return - } + model.transactionPassword = password ?? "" + self.presenter?.submit(model: model, reciepient: reciepient) + } + } + } + + // MARK: VC's Life cycle + override func viewDidLoad() { + super.viewDidLoad() + self.keyboardSetup() + self.setup() + self.configureLanguage() + + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationItem.title = "resend_money_text".localized() + populateRecieversInformations() + populateTransactionDetails() + mQwertyTransKeyView?.delegate = self + mNumberTransKeyView?.delegate = self + self.bankNameStackView.isHidden = (self.requestModel?.bank?.name ?? "").isEmpty + self.accountNumberStackView.isHidden = (self.requestModel?.paymemtMode?.accountNumber ?? "").isEmpty + + + } + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + mQwertyTransKeyView?.mTK_ClearDelegateSubviews() + mNumberTransKeyView?.mTK_ClearDelegateSubviews() + if isTranskeyShowing == false{ + mQwertyTransKeyView?.delegate = nil; + mNumberTransKeyView?.delegate = nil; + } + } + + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return UITableViewAutomaticDimension + } + + override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + return 200 + } + + // MARK: IBActions + @IBAction func showUserAgreement(_ sender: UIButton) { + let webController = UIStoryboard.init(name: "Storyboard", bundle: nil).instantiateViewController(withIdentifier: "WebLinksViewController") as! WebLinksViewController + webController.titleString = "User Agreement" + webController.url = self.url ?? "https://online.gmeremit.com/Terms" + let nav = UINavigationController.init(rootViewController: webController) + self.present(nav, animated: true, completion: nil) + } + + @IBAction func submit(_ sender: UIButton) { + self.askPassword() + } + // MARK: Other Functions + + private func setup() { + configureLanguage() + } + + private func configureLanguage() { + self.fullNameTitleLabel.text = "full_name_text".localized() + self.addressTitleLabel.text = "address_text".localized() + self.countryTitleLabel.text = "country_text".localized() + self.mobileTitleLabel.text = "mobile_text".localized() + self.payoutCountryTitleLabel.text = "payout_country_text".localized() + self.payoutModeTitleLabel.text = "payout_mode_text".localized() + self.payingAmountTitleLabel.text = "paying_amount_text".localized() + self.exchangeRateTitleLabel.text = "exchange_rate_text".localized() + self.serviceChargeTitleLabel.text = "service_charge_text".localized() + self.payoutAgentBankTitleLabel.text = "payout_agent_text".localized() + self.recieverDetailsLabel.text = StringConstants().recieverDetails + self.transactionDetailsLabel.text = StringConstants().transactionDetails + self.readAndAgreeTextLabel.text = StringConstants().readNAgreeText + self.userAgreementButton.setTitle(StringConstants().userAgreementText, for: .normal) + self.agreeAndSendButton.setTitle(StringConstants().agreeAndSendText + , for: .normal) + } + + + + private func keyboardSetup() { + isShowNumber = false + isShowQwerty = false + isTranskeyShowing = false + let iv: Array = ["M", "o", "b", "i", "l", "e", "T", "r" , "a", "n", "s", "K", "e", "y", "1", "0"] + secureKey = NSData(bytes: iv, length: 16) + setQwertyTranskey() + setNumberTranskey() + } + + private func setQwertyTranskey(){ + mQwertyTransKeyView = TransKeyView() + mQwertyTransKeyView?.mTK_Init(self) + mQwertyTransKeyView?.delegate = self + mQwertyTransKeyView?.mTK_MakeSecureKey() + mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) + mQwertyTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531") + } + + private func setNumberTranskey(){ + mNumberTransKeyView = TransKeyView() + mNumberTransKeyView?.mTK_Init(self) + mNumberTransKeyView?.delegate = self + mNumberTransKeyView?.mTK_MakeSecureKey() + mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) + mNumberTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531") + } + + private func populateRecieversInformations() { + self.fullNameLabel.text = self.reciepient?.getFullName() + self.addressLabel.text = self.reciepient?.address + self.countryLabel.text = self.reciepient?.country + self.mobileLabel.text = self.reciepient?.mobileNumber + } + + private func populateTransactionDetails() { + self.payoutCountryLabel.text = self.reciepient?.country + self.payoutModeLabel.text = self.requestModel?.paymemtMode?.mode + self.payingAmountLabel.text = (self.requestModel?.exchangeRateDetail?.recipientAmount ?? "") + " \(self.requestModel?.exchangeRateDetail?.reciepientCurrency ?? "")" + self.exchangeRateLabel.text = self.requestModel?.exchangeRateDetail?.exchangeRate + self.serviceChargeLabel.text = self.requestModel?.exchangeRateDetail?.transferFee + self.payoutAgentBankLabel.text = self.requestModel?.bank?.name + self.accountNoLabel.text = self.requestModel?.paymemtMode?.accountNumber + } + + func askPassword() { + + if (self.requestModel?.autoDebitAccount?.type ?? "").lowercased() == "wallet" { + + if let isUseBiometric = KeyChain.shared.get(key: .biometricAuth), isUseBiometric == "1" { + let biometricAuthenticationWireframe = BiometricAuthenticationWireframe() + biometricAuthenticationWireframe.openWithDelegate(on: self, delegate: self) + } else { + showQwertyTranskeyAction() + } + } else { + if let isUseBiometric = KeyChain.shared.get(key: .biometricAuth), isUseBiometric == "1" { + let biometricAuthenticationWireframe = BiometricAuthenticationWireframe() + biometricAuthenticationWireframe.openWithDelegate(on: self, delegate: self) + } else { SendMoneyCodeWireframe().open(requestmodel: self.requestModel, completion: self.otpEntered, source: self) - } - - func otpEntered(otp: String) { - self.password = otp - } - - // start keyboard - private func showQwertyTranskeyAction() { - if mQwertyTransKeyView?.isBeingPresented == false { - isShowQwerty = true - isTranskeyShowing = true - - let hintStr = String(format:"pasword", 0) - let font = UIFont(name: "Arial", size: 15) - mQwertyTransKeyView?.mTK_SetHint(hintStr, font: font) -// mQwertyTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")i - mQwertyTransKeyView?.mTK_UseCursor(true) - mQwertyTransKeyView?.mTK_UseAllDeleteButton(true) - mQwertyTransKeyView?.mTK_UseNavigationBar(true) - mQwertyTransKeyView?.mTK_UseVoiceOver(true) - mQwertyTransKeyView?.mTK_setHideInputPasswordDelay(3) - mQwertyTransKeyView?.mTK_SetControlCenter(false) - mQwertyTransKeyView?.mTK_setIgnoreStatusbar(false) - mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) - mQwertyTransKeyView?.mTK_UseShiftOptional(true) - mQwertyTransKeyView?.setKeyboardType(self, - keypadType: 0, - mTK_inputType: 2, - mTK_inputTitle: "Password", - mTK_cryptType: 0, - mTK_maxLength: 100, - mTK_minLength: 0, - mTK_keypadUpper: false, - mTK_languageType: 1) - mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false) - mQwertyTransKeyView?.mTK_SetUseBalloonImageButton(true) - if let mQwertyTransKeyView = mQwertyTransKeyView { - self.present(mQwertyTransKeyView, animated: true, completion: nil) - } - } - } - - - func showNumberTranskeyAction(){ - if mNumberTransKeyView?.isBeingPresented == false{ - isShowNumber = true - isTranskeyShowing = true - mNumberTransKeyView?.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0)) - mNumberTransKeyView?.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.") - mNumberTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.") - mNumberTransKeyView?.mTK_UseVoiceOver(false) - mNumberTransKeyView?.mTK_setIgnoreStatusbar(false) - mNumberTransKeyView?.mTK_SetControlCenter(false) - mNumberTransKeyView?.mTK_UseAllDeleteButton(false) - mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) - mNumberTransKeyView?.setKeyboardType(self, - keypadType: TransKeyKeypadTypeText, - mTK_inputType: 2, - mTK_inputTitle: "password", - mTK_cryptType: 0, - mTK_maxLength: 16, - mTK_minLength: 0, - mTK_keypadUpper: false, - mTK_languageType: Int(mTK_Language_English.rawValue)) - if let mNumberTransKeyView = mNumberTransKeyView { - self.present(mNumberTransKeyView, animated: true, completion: nil) - } - } - } + } + } + } + + func otpEntered(otp: String) { + self.password = otp + } + + // start keyboard + private func showQwertyTranskeyAction() { + if mQwertyTransKeyView?.isBeingPresented == false { + isShowQwerty = true + isTranskeyShowing = true + + let hintStr = String(format:"pasword", 0) + let font = UIFont(name: "Arial", size: 15) + mQwertyTransKeyView?.mTK_SetHint(hintStr, font: font) + // mQwertyTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")i + mQwertyTransKeyView?.mTK_UseCursor(true) + mQwertyTransKeyView?.mTK_UseAllDeleteButton(true) + mQwertyTransKeyView?.mTK_UseNavigationBar(true) + mQwertyTransKeyView?.mTK_UseVoiceOver(true) + mQwertyTransKeyView?.mTK_setHideInputPasswordDelay(3) + mQwertyTransKeyView?.mTK_SetControlCenter(false) + mQwertyTransKeyView?.mTK_setIgnoreStatusbar(false) + mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) + mQwertyTransKeyView?.mTK_UseShiftOptional(true) + mQwertyTransKeyView?.setKeyboardType(self, + keypadType: 0, + mTK_inputType: 2, + mTK_inputTitle: "Password", + mTK_cryptType: 0, + mTK_maxLength: 100, + mTK_minLength: 0, + mTK_keypadUpper: false, + mTK_languageType: 1) + mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false) + mQwertyTransKeyView?.mTK_SetUseBalloonImageButton(true) + if let mQwertyTransKeyView = mQwertyTransKeyView { + self.present(mQwertyTransKeyView, animated: true, completion: nil) + } + } + } + + + func showNumberTranskeyAction(){ + if mNumberTransKeyView?.isBeingPresented == false{ + isShowNumber = true + isTranskeyShowing = true + mNumberTransKeyView?.mTK_SetHint("password", font:UIFont(name:"Arial", size: 15.0)) + mNumberTransKeyView?.mTK_ShowMessageIfMinLength("0자리 이상 입력해주세요.") + mNumberTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.") + mNumberTransKeyView?.mTK_UseVoiceOver(false) + mNumberTransKeyView?.mTK_setIgnoreStatusbar(false) + mNumberTransKeyView?.mTK_SetControlCenter(false) + mNumberTransKeyView?.mTK_UseAllDeleteButton(false) + mNumberTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) + mNumberTransKeyView?.setKeyboardType(self, + keypadType: TransKeyKeypadTypeText, + mTK_inputType: 2, + mTK_inputTitle: "password", + mTK_cryptType: 0, + mTK_maxLength: 16, + mTK_minLength: 0, + mTK_keypadUpper: false, + mTK_languageType: Int(mTK_Language_English.rawValue)) + if let mNumberTransKeyView = mNumberTransKeyView { + self.present(mNumberTransKeyView, animated: true, completion: nil) + } + } + } } // MARK: SendMoneyVerificationViewInterface extension SendMoneyVerificationViewController: SendMoneyVerificationViewInterface { - func show(model: SendMoneySubmitModelContainer?) { - self.alertWithOk(message: model?.message , title: "Success", okTitle: "OK", style: UIAlertControllerStyle.alert, OkStyle: .default) { - if let id = model?.id { - self.presenter?.openReciept(transactionId: id) - }else { - self.alert(message: "No Transaction recievied.") - } - } - } - - func show(error: String) { -// self.presenter?.openReciept(transactionId: "1235") - if isUsingBiometricAuth { - if error.contains("Invalid Password") { - MainWireframe.logoutWarningAlert(message: "It is different from registered password.\nplease try to login again") - - } - } + func show(model: SendMoneySubmitModelContainer?) { + self.alertWithOk(message: model?.message , title: "Success", okTitle: "OK", style: UIAlertControllerStyle.alert, OkStyle: .default) { + if let id = model?.id { + self.presenter?.openReciept(transactionId: id) + }else { + self.alert(message: "No Transaction recievied.") + } + } + } + + func show(error: String) { + // self.presenter?.openReciept(transactionId: "1235") + if isUsingBiometricAuth { + if error.contains("Invalid Password") { + MainWireframe.logoutWarningAlert(message: "It is different from registered password.\nplease try to login again") - self.alert(message: error) + } } - func showLoading() { - if let _ = hudDelegate { - self.hudDelegate?.showLoading() - }else { - self.showProgressHud() - } - + self.alert(message: error) + } + + func showLoading() { + if let _ = hudDelegate { + self.hudDelegate?.showLoading() + }else { + self.showProgressHud() } - func hideLoading() { - self.hudDelegate?.hideLoading() - self.hideProgressHud() - } + } + + func hideLoading() { + self.hudDelegate?.hideLoading() + self.hideProgressHud() + } } extension SendMoneyVerificationViewController { - override func didMove(toParentViewController parent: UIViewController?) { - self.viewWillAppear(true) - } + override func didMove(toParentViewController parent: UIViewController?) { + self.viewWillAppear(true) + } } extension SendMoneyVerificationViewController: TransKeyViewDelegate { - func secureInputFinish(_ type: Int) { - NSLog("secureInputFinish Btn Type : %d", type) - NSLog("secureInputFinish"); - var targetView : TransKeyView? - - NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description) - if isShowQwerty == true{ - qwertyCipherString = mQwertyTransKeyView?.mTK_GetSecureData() - if mQwertyTransKeyView?.mTK_GetDataLength() == 0 { - self.encryptedText = "" - }else { - self.encryptedText = qwertyCipherString - self.password = self.encryptedText - } - self.encryptedText = qwertyCipherString - targetView = mQwertyTransKeyView - } - - if isShowNumber == true{ - numberCipherString = mNumberTransKeyView?.mTK_GetSecureData() - self.encryptedNumber = numberCipherString - - self.encryptedText = "" - self.password = self.encryptedNumber - - targetView = mNumberTransKeyView - } - isShowQwerty = false - isShowNumber = false - isTranskeyShowing = false - - targetView?.dismiss(animated: true, completion: nil) - - } + func secureInputFinish(_ type: Int) { + NSLog("secureInputFinish Btn Type : %d", type) + NSLog("secureInputFinish"); + var targetView : TransKeyView? + + NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description) + if isShowQwerty == true{ + qwertyCipherString = mQwertyTransKeyView?.mTK_GetSecureData() + if mQwertyTransKeyView?.mTK_GetDataLength() == 0 { + self.encryptedText = "" + }else { + self.encryptedText = qwertyCipherString + self.password = self.encryptedText + } + self.encryptedText = qwertyCipherString + targetView = mQwertyTransKeyView + } + + if isShowNumber == true{ + numberCipherString = mNumberTransKeyView?.mTK_GetSecureData() + self.encryptedNumber = numberCipherString + + self.encryptedText = "" + self.password = self.encryptedNumber + + targetView = mNumberTransKeyView + } + isShowQwerty = false + isShowNumber = false + isTranskeyShowing = false + + targetView?.dismiss(animated: true, completion: nil) + + } } extension SendMoneyVerificationViewController: BiometricAuthenticationViewControllerDelegate { - func viewController(_ viewController: BiometricAuthenticationViewController, informationTitleLabel titleLabel: UILabel) { - titleLabel.text = "Please enter authentication information for Remittance" - } - - func didComplete(_ viewController: BiometricAuthenticationViewController) { - self.isUsingBiometricAuth = true - 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, didFailWithError error: Error, errorMessage: String?) { - print("BiometricAuthenticationWireframe Error: \(errorMessage ?? "")") - viewController.dismiss(animated: true){ - guard let err = error as? BiometricAuthenticationError else{ - return - } - - switch err { - case .userFallback: - self.isUsingBiometricAuth = false - self.showQwertyTranskeyAction() - default: - break - } - } - } - - func doSelectLocalAuthenticationPolicy(_ viewController: BiometricAuthenticationViewController) -> BiometricAuthenticationPolicy{ - return .deviceOwnerAuthenticationWithBiometrics - } + func viewController(_ viewController: BiometricAuthenticationViewController, informationTitleLabel titleLabel: UILabel) { + titleLabel.text = "Please enter authentication information for Remittance" + } + + func didComplete(_ viewController: BiometricAuthenticationViewController) { + self.isUsingBiometricAuth = true + 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, didFailWithError error: Error, errorMessage: String?) { + print("BiometricAuthenticationWireframe Error: \(errorMessage ?? "")") + viewController.dismiss(animated: true){ + guard let err = error as? BiometricAuthenticationError else{ + return + } + + switch err { + case .userFallback: + self.isUsingBiometricAuth = false + self.showQwertyTranskeyAction() + default: + break + } + } + } + + func doSelectLocalAuthenticationPolicy(_ viewController: BiometricAuthenticationViewController) -> BiometricAuthenticationPolicy{ + return .deviceOwnerAuthenticationWithBiometrics + } }