Browse Source

Merge branch '1_reward'

pull/1/head
james 5 years ago
parent
commit
9d69d64f9a
  1. 1
      GMERemittance/Extension/DataRequestExtension.swift
  2. 2
      GMERemittance/Module/RewardModules/Reward/User Interface/View/Cell/RewardItemCollectionViewCell.swift
  3. 4
      GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift
  4. 4
      GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard
  5. 9
      GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift
  6. 4
      GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift
  7. 814
      GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift

1
GMERemittance/Extension/DataRequestExtension.swift

@ -48,6 +48,7 @@ extension DataRequest {
MainWireframe.logoutWarningAlert(message: "You will be logout because you are connected from another device.") MainWireframe.logoutWarningAlert(message: "You will be logout because you are connected from another device.")
return return
} }
failure(error)
} }
} }
} }

2
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 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.backgroundColor = isEnable ? AppConstants.themeRedColor : .lightGray
self.redeemButton.isEnabled = isEnable self.redeemButton.isEnabled = isEnable

4
GMERemittance/Module/SendMoney/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift

@ -297,11 +297,11 @@ extension SendMoneyParentViewController: SendMoneyParentViewInterface {
extension SendMoneyParentViewController: HUDStatusDelegate { extension SendMoneyParentViewController: HUDStatusDelegate {
func showLoading() { func showLoading() {
self.showProgressHud()
self.tabBarController?.showProgressHud()
} }
func hideLoading() { func hideLoading() {
self.hideProgressHud()
self.tabBarController?.hideProgressHud()
} }
} }

4
GMERemittance/Module/SendMoney/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentMode.storyboard

@ -192,11 +192,11 @@
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="XD6-uC-3cA"> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="XD6-uC-3cA">
<rect key="frame" x="0.0" y="110" width="355" height="44"/> <rect key="frame" x="0.0" y="110" width="355" height="44"/>
<subviews> <subviews>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Account Number" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="hUc-L0-iaO">
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Account Number" textAlignment="natural" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="hUc-L0-iaO">
<rect key="frame" x="0.0" y="0.0" width="355" height="44"/> <rect key="frame" x="0.0" y="0.0" width="355" height="44"/>
<color key="textColor" red="0.29019607843137252" green="0.29019607843137252" blue="0.29019607843137252" alpha="1" colorSpace="calibratedRGB"/> <color key="textColor" red="0.29019607843137252" green="0.29019607843137252" blue="0.29019607843137252" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/> <fontDescription key="fontDescription" name="SanFranciscoDisplay-Regular" family="San Francisco Display" pointSize="12"/>
<textInputTraits key="textInputTraits" keyboardType="namePhonePad"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad"/>
</textField> </textField>
</subviews> </subviews>
<constraints> <constraints>

9
GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Interactor/SendMoneyVerificationInteractor.swift

@ -59,15 +59,15 @@ extension SendMoneyVerificationInteractor: SendMoneyVerificationInteractorInput
return Notification.Name.init(AppConstants.yearlyLimitNotification) 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 let _default = UserDefaults.standard
guard let username = _default.value(forKey: UserKeys.userId) as? String else {return [:]} guard let username = _default.value(forKey: UserKeys.userId) as? String else {return [:]}
let senderId = _default.value(forKey: UserKeys.senderId) as? String let senderId = _default.value(forKey: UserKeys.senderId) as? String
let recieverId = reciepient.recipientId let recieverId = reciepient.recipientId
let params: [String: String] =
let isUseBiometric = KeyChain.shared.get(key: .biometricAuth) == "1" ? true : false
let params: [String: Any] =
[ [
"user": username, "user": username,
"senderId": senderId ?? "", "senderId": senderId ?? "",
@ -104,6 +104,7 @@ extension SendMoneyVerificationInteractor: SendMoneyVerificationInteractorInput
"txnPassword": model.transactionPassword ?? "", "txnPassword": model.transactionPassword ?? "",
"ReceiverAccountNo": model.paymemtMode?.accountNumber ?? "", "ReceiverAccountNo": model.paymemtMode?.accountNumber ?? "",
"KftcLogId": model.autoDebitAccount?.kftcLogId ?? "", "KftcLogId": model.autoDebitAccount?.kftcLogId ?? "",
"isUseBiometric": isUseBiometric
] ]
return params return params

4
GMERemittance/Module/SendMoney/SendMoneyVerification/Application Logic/Service/SendMoneyVerificationServiceType.swift

@ -14,12 +14,12 @@ protocol SendMoneyVerificationServiceType: class, SendMoneyVerificationSubmitApi
protocol SendMoneyVerificationSubmitApi: ApiServiceType { 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 { 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" let url = baseUrl + "/mobile/sendmoney/dotransaction"
self.auth.request(method: .post, url: url, params: params, success: { (response: SendMoneySubmitModelContainer) in self.auth.request(method: .post, url: url, params: params, success: { (response: SendMoneySubmitModelContainer) in
if (response.errorCode ?? "") == "1" { if (response.errorCode ?? "") == "1" {

814
GMERemittance/Module/SendMoney/SendMoneyVerification/User Interface/View/SendMoneyVerificationViewController.swift

@ -9,430 +9,434 @@
import UIKit import UIKit
class SendMoneyVerificationViewController: UITableViewController { 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<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
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<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
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) 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 // MARK: SendMoneyVerificationViewInterface
extension SendMoneyVerificationViewController: 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 { extension SendMoneyVerificationViewController {
override func didMove(toParentViewController parent: UIViewController?) {
self.viewWillAppear(true)
}
override func didMove(toParentViewController parent: UIViewController?) {
self.viewWillAppear(true)
}
} }
extension SendMoneyVerificationViewController: TransKeyViewDelegate { 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 { 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
}
} }
Loading…
Cancel
Save