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.
354 lines
14 KiB
354 lines
14 KiB
//
|
|
// 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!
|
|
|
|
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 {
|
|
self.password = encryptedText
|
|
}
|
|
}
|
|
var encryptedNumber: String! {
|
|
didSet {
|
|
self.password = encryptedNumber
|
|
}
|
|
}
|
|
|
|
// 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)
|
|
populateRecieversInformations()
|
|
populateTransactionDetails()
|
|
}
|
|
|
|
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<String> = ["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(completion: self.otpEntered, source: self)
|
|
}
|
|
|
|
func otpEntered(otp: String) {
|
|
self.encryptedNumber = 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?.setKeyboardType(self,
|
|
keypadType: 0,
|
|
mTK_inputType: 2,
|
|
mTK_inputTitle: "입력",
|
|
mTK_cryptType: 0,
|
|
mTK_maxLength: 100,
|
|
mTK_minLength: 0,
|
|
mTK_keypadUpper: false,
|
|
mTK_languageType: 0)
|
|
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() {
|
|
self.hudDelegate?.showLoading()
|
|
}
|
|
|
|
func hideLoading() {
|
|
self.hudDelegate?.hideLoading()
|
|
}
|
|
}
|
|
|
|
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.encryptedText = qwertyCipherString
|
|
targetView = mQwertyTransKeyView
|
|
}
|
|
|
|
if isShowNumber == true{
|
|
numberCipherString = mNumberTransKeyView?.mTK_GetSecureData()
|
|
self.encryptedNumber = numberCipherString
|
|
|
|
self.encryptedText = numberCipherString
|
|
|
|
targetView = mNumberTransKeyView
|
|
}
|
|
isShowQwerty = false
|
|
isShowNumber = false
|
|
isTranskeyShowing = false
|
|
|
|
targetView?.dismiss(animated: true, completion: nil)
|
|
|
|
}
|
|
}
|