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

//
// 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)
}
}