// // SendMoneyVerificationViewController.swift // GMERemittance // // Created by gme_2 on 28/08/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // 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 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! // 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! 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 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 } 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 } func askPassword() { if (self.requestModel?.autoDebitAccount?.type ?? "").lowercased() == "wallet" { showQwertyTranskeyAction() return } 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) } } } } // 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") self.alert(message: error) } func showLoading() { if let _ = hudDelegate { self.hudDelegate?.showLoading() }else { self.showProgressHud() } } func hideLoading() { self.hudDelegate?.hideLoading() self.hideProgressHud() } } extension SendMoneyVerificationViewController { 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) } } extension SendMoneyVerificationViewController { }