// // SendMoneyCodeViewController.swift // GME Remit // // Created by gme_2 on 27/02/2019. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import PMAlertController import Hex class SendMoneyCodeViewController: UIViewController { // MARK: IBOutlets @IBOutlet weak var otpCodeTitlelabel: UILabel! @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var verificationCodeTextField: UITextField! @IBOutlet weak var viewSampleButton: UIButton! @IBOutlet weak var resendButton: UIButton! @IBOutlet weak var submitButton: UIButton! @IBOutlet weak var notNowButton: UIButton! @IBOutlet weak var counterLabel: UILabel! @IBOutlet weak var counterTitleLabel: UILabel! @IBOutlet weak var counterStackView: UIStackView! @IBOutlet weak var backGourndBorderView: UIView! var timer: Timer? let expiryTime = 120 // second var count: Int = 120 { didSet { if ( count <= 0) { count = expiryTime // two minutes passed self.timer?.invalidate() self.resendButton.isUserInteractionEnabled = true self.counterStackView.isHidden = true } else { let result = count.quotientAndRemainder(dividingBy: 60) self.counterLabel.text = "\(result.quotient): \(result.remainder)" } } } // MARK: Properties var mNumberTransKeyView : TransKeyView! var numberCipherString : String! var presenter: SendMoneyCodeModuleInterface? var completion: ((String) -> ())? var encryptedNumber: String! { didSet { self.dismiss(animated: true, completion: { self.completion?(self.encryptedNumber) }) } } var isShowNumber : Bool! var isTranskeyShowing : Bool! // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.keyboardSetup() self.setup() self.requestOtpCode() } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) mNumberTransKeyView?.mTK_ClearDelegateSubviews() if isTranskeyShowing == false{ mNumberTransKeyView?.delegate = nil; } } private func keyboardSetup() { isShowNumber = false isTranskeyShowing = false setNumberTranskey() } 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") } 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: IBActions // MARK: Other Functions private func setup() { // all setup should be done here self.titleLabel.text = "enter_otp_password_text".localized() self.verificationCodeTextField.placeholder = "otp_password_hint_text".localized() self.resendButton.setTitle("resend_request_text".localized(), for: UIControlState.normal) self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal) self.submitButton.setTitle("submit_text".localized(), for: .normal) self.notNowButton.setTitle("not_now_text".localized(), for: .normal) verificationCodeTextField.delegate = self self.backGourndBorderView.layer.borderWidth = 0.5 self.backGourndBorderView.layer.borderColor = UIColor.init(hex: "#EBECED").cgColor self.backGourndBorderView.layer.cornerRadius = 10 } private func configureText() { self.titleLabel.text = "penny_test_promt_description_text".localized() self.otpCodeTitlelabel.text = "otp__Code_text".localized() self.viewSampleButton.setTitle("view_sample_text".localized(), for: UIControlState.normal) self.resendButton.setTitle("resend_text".localized(), for: UIControlState.normal) self.submitButton.setTitle("submit_text".localized(), for: UIControlState.normal) self.notNowButton.setTitle("not_now_text".localized(), for: UIControlState.normal) self.counterTitleLabel.text = "resend_code_text".localized() } @IBAction func viewSample(_ sender: Any) { self.showSampleImage() } @IBAction func resend(_ sender: Any) { self.requestOtpCode() } @IBAction func dismiss(_ sender: Any) { self.dismiss() } private func dismiss() { self.dismiss(animated: true, completion: nil) } func showSampleImage() { let image = #imageLiteral(resourceName: "penny3.jpg") let alertVC = PMAlertController(title: "", description: "", image: image, style: .alert) alertVC.alertView.layer.cornerRadius = 10 let action = PMAlertAction(title: "ok_text".localized(), style: .cancel) alertVC.addAction(action) self.present(alertVC, animated: true, completion: nil) } // resend private func requestOtpCode() { // request otp self.presenter?.viewIsReady() self.startTimer() } private func startTimer() { self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateCounter), userInfo: nil, repeats: true) self.timer?.fire() self.resendButton.isUserInteractionEnabled = false self.counterStackView.isHidden = false } @objc func updateCounter() { self.count -= 1 } private func requestOtpCodeRetryCount() { let _default = UserDefaults.standard } } // MARK: SendMoneyCodeViewInterface extension SendMoneyCodeViewController: SendMoneyCodeViewInterface { func showLoading() { self.showProgressHud() } func hideLoading() { self.hideProgressHud() } func show(message: String) { self.alert(message: message) } func show(error: String) { self.alert(message: error) } } extension SendMoneyCodeViewController: TransKeyViewDelegate { func secureInputFinish(_ type: Int) { var targetView : TransKeyView? numberCipherString = mNumberTransKeyView?.mTK_GetSecureData() targetView = mNumberTransKeyView targetView?.dismiss(animated: true, completion: { self.encryptedNumber = self.numberCipherString }) } } extension SendMoneyCodeViewController: UITextFieldDelegate { func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { self.showNumberTranskeyAction() return false } } extension SendMoneyCodeViewController: OtpCodeRequestApiService { }