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.
792 lines
29 KiB
792 lines
29 KiB
//
|
|
// RecipientTranscationViewController.swift
|
|
// GMERemittance
|
|
//
|
|
// Created by Fm-user on 12/22/17.
|
|
// Copyright © 2017 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class RecipientTranscationViewController: UIViewController {
|
|
|
|
@IBOutlet weak var pickerViewCurrency: UIPickerView!
|
|
@IBOutlet weak var viewContainWithKoreanCurrency: UIView!
|
|
@IBOutlet weak var viewContainWithOtherCountryCurrency: UIView!
|
|
@IBOutlet weak var availableBalance: UILabel!
|
|
@IBOutlet weak var viewContentMain: UIView!
|
|
@IBOutlet weak var buttonSave: UIButton!
|
|
@IBOutlet weak var dropDownCountryButton: UIButton!
|
|
@IBOutlet weak var imageViewCountry: UIImageView!
|
|
@IBOutlet weak var transferLimitMessageLabel: UILabel!
|
|
@IBOutlet weak var moneySendingMessageLabel: UILabel!
|
|
@IBOutlet weak var rewardPointlabel: UILabel!
|
|
@IBOutlet weak var serviceFeeLabel: UILabel!
|
|
@IBOutlet weak var transactionLimit: UILabel!
|
|
@IBOutlet weak var labelCurrency: UILabel!
|
|
@IBOutlet weak var labelExchangeRate: UILabel!
|
|
@IBOutlet weak var viewBalance: UIView!
|
|
@IBOutlet weak var viewExchange: UIView!
|
|
@IBOutlet weak var textFieldKRW: UITextField!
|
|
@IBOutlet weak var textFieldNPR: UITextField!
|
|
|
|
private var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
|
|
private var numberPad = UIKeyboardType.numberPad
|
|
|
|
private var amountNPR: Float!
|
|
private var networkDialogShown: Bool = false
|
|
private var buttomCurrencyStatus: Bool?
|
|
private var isScrolled: Bool = false
|
|
|
|
//Recieved from previous ViewController
|
|
var recipient: Recipient?
|
|
var paymentMode: String?
|
|
var paymentMethodId: String?
|
|
//Recieved, updated and transferred to next
|
|
var transferDetails: [String: String]?
|
|
//Added for home delivery
|
|
var homeDetails: [String: String]?
|
|
/// to send exchange body
|
|
private var exchangeData: [String: Any]?
|
|
|
|
private var pickerData: [String] = [String]()
|
|
private var calculateBy: String?
|
|
private var currencyDetailArray: [Currency] = [Currency]()
|
|
private var currencyArray = [String]()
|
|
private var transactionviewmodel = TransactionViewModel()
|
|
|
|
public static var recipientListViewControllerConnectionCheck = 0
|
|
|
|
@IBAction func selectPaymentMethod(_ sender: Any) {
|
|
dismissKeyboard()
|
|
performSegue(withIdentifier: "reviewTransfer", sender: nil)
|
|
}
|
|
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
setUpAnotherLoginListener(genericviewmodel: transactionviewmodel)
|
|
|
|
pickerViewCurrency.dataSource = self
|
|
pickerViewCurrency.delegate = self
|
|
|
|
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTapKoreanCurrencyView))
|
|
tap.delegate = self as? UIGestureRecognizerDelegate
|
|
viewContainWithKoreanCurrency.addGestureRecognizer(tap)
|
|
|
|
let tapOtherView = UITapGestureRecognizer(target: self, action: #selector(handleTapOtherCountryCurrencyView))
|
|
tap.delegate = self as? UIGestureRecognizerDelegate
|
|
viewContainWithOtherCountryCurrency.addGestureRecognizer(tapOtherView)
|
|
|
|
///Background listner
|
|
let notificationCenter = NotificationCenter.default
|
|
notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil)
|
|
|
|
setUpNavBar(id: 201, title: "Send Money")
|
|
viewContentMain.isHidden = true
|
|
buttomCurrencyStatus = true
|
|
buttonSave.isUserInteractionEnabled = false
|
|
buttonSave.alpha = 0.3
|
|
textFieldPlaceHolderAttribute()
|
|
countryPickerViewButtonDesign()
|
|
|
|
|
|
transactionviewmodel.transactionViewConnectionTimeOut.value = nil
|
|
/**
|
|
connection timeout
|
|
*/
|
|
transactionviewmodel.transactionViewConnectionTimeOut.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if RecipientTranscationViewController.recipientListViewControllerConnectionCheck == 0{
|
|
RecipientTranscationViewController.recipientListViewControllerConnectionCheck = RecipientTranscationViewController.recipientListViewControllerConnectionCheck+1
|
|
self.popUpMessage(value: 25)
|
|
}
|
|
}
|
|
|
|
/**
|
|
Check internet connection
|
|
*/
|
|
transactionviewmodel.internetConnection.value = nil
|
|
transactionviewmodel.internetConnection.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
if !self.networkDialogShown {
|
|
self.popUpMessage(value: 15)
|
|
self.networkDialogShown = true
|
|
}
|
|
}
|
|
|
|
guard paymentMode != nil else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
return
|
|
}
|
|
|
|
if paymentMode! == paymentModeType.cashPayment.rawValue {
|
|
guard recipient != nil else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
return
|
|
}
|
|
} else {
|
|
guard transferDetails?.count != 0 && recipient != nil else {
|
|
self.popUpMessageError(value: 10, message: "Error getting data")
|
|
return
|
|
}
|
|
transactionviewmodel.setTransferDetails(transferDetails: transferDetails!)
|
|
}
|
|
|
|
exchangeRateBindCall()
|
|
transactionInfoBindCall()
|
|
currrencyBindCall()
|
|
countryBindCall()
|
|
|
|
self.startLoading()
|
|
transactionviewmodel.fetchTransactionInfo(transactionInfo: transactionInfoParam())
|
|
transactionviewmodel.fetchCurrency(currencyInfo: currencyParam())
|
|
|
|
if let countryId = recipient?.countryId{
|
|
transactionviewmodel.fetchCountry(countryId: countryId)
|
|
}
|
|
textFieldKRW.delegate = self
|
|
textFieldNPR.delegate = self
|
|
viewBalance.layer.cornerRadius = 10
|
|
viewExchange.layer.cornerRadius = 10
|
|
}
|
|
|
|
/**
|
|
In case when app move to background
|
|
*/
|
|
@objc func appMovedToBackground() {
|
|
textFieldKRW.resignFirstResponder()
|
|
textFieldNPR.resignFirstResponder()
|
|
}
|
|
|
|
/**
|
|
Disable user interaction while fetching data from api
|
|
*/
|
|
func startLoading(){
|
|
disableUserInteractions()
|
|
showActivityIndicator(activityIndicator: activityIndicator)
|
|
}
|
|
|
|
/**
|
|
Enable user interaction while fetching data from api
|
|
*/
|
|
func stopLoading(){
|
|
self.dismissActivityIndicator(activityIndicator: self.activityIndicator)
|
|
self.enableUserInteractions()
|
|
}
|
|
|
|
/**
|
|
Handle tap action in view
|
|
*/
|
|
@objc func handleTapKoreanCurrencyView(){
|
|
textFieldKRW.becomeFirstResponder()
|
|
}
|
|
|
|
/**
|
|
Handle tap action in view
|
|
*/
|
|
@objc func handleTapOtherCountryCurrencyView(){
|
|
textFieldNPR.becomeFirstResponder()
|
|
}
|
|
|
|
/**
|
|
Api request for exchange rate
|
|
*/
|
|
func exchangeRateBindCall(){
|
|
transactionviewmodel.exchangeRateAvailable.bind { [unowned self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self.stopLoading()
|
|
|
|
guard $0! else {
|
|
self.popUpMessageError(value: 10, message: self.transactionviewmodel.getErrorMessage())
|
|
self.viewContentMain.isHidden = false
|
|
return
|
|
}
|
|
self.exchangeRateDisplay()
|
|
self.serviceFeeDataDisplay()
|
|
if self.paymentMode != paymentModeType.cashPayment.rawValue{
|
|
if let transferDetails = self.transferDetails{
|
|
self.transactionviewmodel.setTransferDetails(transferDetails: transferDetails)
|
|
}
|
|
}
|
|
self.textFieldNPR.text = self.transactionviewmodel.getpAmt()
|
|
self.textFieldKRW.text = self.transactionviewmodel.getcAmt()
|
|
self.rewardPointlabel.text = "+" + String(self.transactionviewmodel.getRewardPoint())
|
|
self.viewContentMain.isHidden = false
|
|
self.buttonSave.isUserInteractionEnabled = true
|
|
self.buttonSave.alpha = 1
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request for transaction info
|
|
*/
|
|
func transactionInfoBindCall(){
|
|
transactionviewmodel.transactionInfoAvailable.bind { [weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self?.stopLoading()
|
|
|
|
guard $0! else {
|
|
self?.popUpMessageError(value: 10, message: (self?.transactionviewmodel.getErrorMessage())!)
|
|
self?.viewContentMain.isHidden = false
|
|
|
|
return
|
|
}
|
|
if let availableBalance = UserDefaults.standard.object(forKey: "com.gmeremit.balance") as? String {
|
|
self?.availableBalance.text = (self?.getCommaAddedAmountString(amountString: availableBalance ))! + " KRW"
|
|
}
|
|
self?.setTransferLimitMessage(amount: String(format: "%.0f", (self?.transactionviewmodel.getTransferLimit())!))
|
|
self?.setTransactionLimit(amount:String(format: "%d", (self?.transactionviewmodel.getTransactionLimit())!))
|
|
self?.setMoneySendingMessage(sender:(self?.recipient?.getFullName())!)
|
|
self?.viewContentMain.isHidden = false
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request for currency
|
|
*/
|
|
func currrencyBindCall(){
|
|
transactionviewmodel.currencyInfoAvailable.bind{[weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self?.stopLoading()
|
|
|
|
guard $0! else {
|
|
self?.popUpMessageError(value: 10, message: (self?.transactionviewmodel.getErrorMessage())!)
|
|
self?.viewContentMain.isHidden = false
|
|
|
|
return
|
|
}
|
|
if let count = self?.transactionviewmodel.getCurrencyArray().count{
|
|
if count > 0{
|
|
self?.currencyDetailArray = (self?.transactionviewmodel.getCurrencyArray())!
|
|
self?.currencyArray = (self!.currencyDetailArray.map{$0.name!})
|
|
if let count = self?.currencyArray.count{
|
|
if count > 0{
|
|
self?.pickerData = (self?.currencyArray)!
|
|
}
|
|
}
|
|
if let currency = self?.pickerData[0]{
|
|
self?.labelCurrency.text = currency
|
|
self?.dropDownCountryButton.setTitle(currency + " ", for: UIControlState.normal)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
Api request for country
|
|
*/
|
|
func countryBindCall(){
|
|
transactionviewmodel.countryInfoAvailable.bind{[weak self] in
|
|
guard $0 != nil else {
|
|
return
|
|
}
|
|
self?.stopLoading()
|
|
|
|
guard $0! else {
|
|
self?.popUpMessageError(value: 10, message: (self?.transactionviewmodel.getErrorMessage())!)
|
|
self?.viewContentMain.isHidden = false
|
|
|
|
return
|
|
}
|
|
if let flagUrl = self?.transactionviewmodel.getCountryDetail()[0].flagUrl{
|
|
self?.imageViewCountry?.sd_setImage(with:URL(string: flagUrl), placeholderImage: nil, options: [.progressiveDownload,.scaleDownLargeImages], completed: nil)
|
|
}
|
|
}
|
|
}
|
|
|
|
@IBAction func buttonCurrencyTap(_ sender: Any) {
|
|
pickerViewCurrency.reloadAllComponents()
|
|
if currencyArray.count != 0{
|
|
self.pickerData = self.currencyArray
|
|
}
|
|
buttomCurrencyStatus = !buttomCurrencyStatus!
|
|
if buttomCurrencyStatus! {
|
|
pickerViewCurrency.isHidden = true
|
|
} else {
|
|
pickerViewCurrency.isHidden = false
|
|
}
|
|
}
|
|
|
|
/**
|
|
Get payment method id
|
|
*/
|
|
func getPaymentMethodId() -> String{
|
|
if paymentMode == paymentModeType.cashPayment.rawValue || paymentMode == paymentModeType.cashPaymentPartner.rawValue {
|
|
paymentMethodId = paymentMethodIdType.cashMethod.rawValue
|
|
} else if paymentMode == paymentModeType.bankPayment.rawValue {
|
|
paymentMethodId = paymentMethodIdType.bankMethod.rawValue
|
|
} else if paymentMode == paymentModeType.homeDelivery.rawValue {
|
|
paymentMethodId = paymentMethodIdType.homeMethod.rawValue
|
|
}
|
|
return paymentMethodId!
|
|
}
|
|
|
|
/**
|
|
Get transaction info param
|
|
*/
|
|
func transactionInfoParam() -> [String: String]{
|
|
var transactionParam: [String: String]?
|
|
|
|
if let countryId = recipient?.countryId{
|
|
transactionParam = ["countryId": (countryId),
|
|
"payoutMethodId": getPaymentMethodId()]
|
|
}
|
|
return transactionParam!
|
|
}
|
|
|
|
/**
|
|
Get currency param
|
|
*/
|
|
func currencyParam() -> [String: String]{
|
|
var pam: [String: Any]?
|
|
if let countryId = recipient?.countryId{
|
|
pam = ["countryId": countryId,
|
|
"payoutMethodId": getPaymentMethodId(),
|
|
"payoutLocationId": transferDetails?["bankPayoutId"] ?? ""
|
|
] as [String : Any]
|
|
}
|
|
return pam as! [String : String]
|
|
}
|
|
|
|
/**
|
|
Text field place holder attribute
|
|
*/
|
|
func textFieldPlaceHolderAttribute(){
|
|
textFieldKRW.attributedPlaceholder = NSAttributedString(string: "0",
|
|
attributes: [NSAttributedStringKey.foregroundColor: UIColor(red:0.93, green:0.11, blue:0.14, alpha:1.0)])
|
|
textFieldNPR.attributedPlaceholder = NSAttributedString(string: "0",
|
|
attributes: [NSAttributedStringKey.foregroundColor: UIColor(red:0.93, green:0.11, blue:0.14, alpha:1.0)])
|
|
}
|
|
|
|
/**
|
|
Country picker view button design
|
|
*/
|
|
func countryPickerViewButtonDesign(){
|
|
dropDownCountryButton.layer.borderColor = UIColor(red:0.93, green:0.11, blue:0.14, alpha:1.0).cgColor
|
|
dropDownCountryButton.layer.borderWidth = 1.0
|
|
dropDownCountryButton.layer.cornerRadius = 8
|
|
}
|
|
|
|
/**
|
|
Exchange rate value display
|
|
*/
|
|
func exchangeRateDisplay(){
|
|
let exchangeRateValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let exchangeRate: String = String("Exchange Rate: ")
|
|
|
|
let mutableExchangeRate = NSMutableAttributedString(string: exchangeRate)
|
|
let mutableExchangeRateValue = NSMutableAttributedString(string: String(transactionviewmodel.getExchangeRate()))
|
|
mutableExchangeRateValue.addAttribute(NSAttributedStringKey.foregroundColor, value: exchangeRateValueColor, range: NSRange(location:0, length: mutableExchangeRateValue.length))
|
|
|
|
let exchangeRateData = NSMutableAttributedString()
|
|
exchangeRateData.append(mutableExchangeRate)
|
|
exchangeRateData.append(mutableExchangeRateValue)
|
|
|
|
labelExchangeRate.attributedText = exchangeRateData
|
|
}
|
|
|
|
/**
|
|
Display service fee data
|
|
*/
|
|
func serviceFeeDataDisplay(){
|
|
let serviceFeeValueColor = UIColor(red: 236/255, green: 28/255.0, blue: 36/255, alpha: 1.0)
|
|
let serviceFee: String = String("Service Fee: ")
|
|
|
|
let mutableServiceFee = NSMutableAttributedString(string: serviceFee)
|
|
let mutableServiceFeeValue = NSMutableAttributedString(string: transactionviewmodel.getTransferFee() + " KRW" + " (Inclusive)")
|
|
mutableServiceFeeValue.addAttribute(NSAttributedStringKey.foregroundColor, value: serviceFeeValueColor, range: NSRange(location:0, length: mutableServiceFeeValue.length))
|
|
|
|
let transferFee = NSMutableAttributedString()
|
|
transferFee.append(mutableServiceFee)
|
|
transferFee.append(mutableServiceFeeValue)
|
|
|
|
serviceFeeLabel.attributedText = transferFee
|
|
}
|
|
|
|
/**
|
|
Set custom first transaction message
|
|
*/
|
|
func setFirstTransactionFreeMessage(){
|
|
let feeMessage: String = String("Your First Transfer Fees is ")
|
|
|
|
let mutableFeeMessage1 = NSMutableAttributedString(string: feeMessage)
|
|
|
|
let attrs = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 15),NSAttributedStringKey.foregroundColor:UIColor.red]
|
|
let freeMessageInBold = NSMutableAttributedString(string:"Free", attributes:attrs)
|
|
|
|
let mutableFeeMessage = NSMutableAttributedString()
|
|
mutableFeeMessage.append(mutableFeeMessage1)
|
|
mutableFeeMessage.append(freeMessageInBold)
|
|
}
|
|
|
|
/**
|
|
Set custom message money sending
|
|
*/
|
|
func setMoneySendingMessage(sender:String){
|
|
let sendingMessage: String = String("You are sending money to ")
|
|
|
|
let mutableSenderMessage1 = NSMutableAttributedString(string: sendingMessage)
|
|
|
|
let attrs = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 15)]
|
|
let senderMessageInBold = NSMutableAttributedString(string:sender, attributes:attrs)
|
|
|
|
let mutableSenderMessage = NSMutableAttributedString()
|
|
mutableSenderMessage.append(mutableSenderMessage1)
|
|
mutableSenderMessage.append(senderMessageInBold)
|
|
|
|
moneySendingMessageLabel.attributedText = mutableSenderMessage
|
|
}
|
|
|
|
/**
|
|
Set transfer limit message
|
|
*/
|
|
func setTransferLimitMessage(amount:String){
|
|
let transferMessage1: String = String("Transfer Limit Max \n")
|
|
let transferMessage3: String = String(" KRW per day")
|
|
|
|
let mutableTransferMessage1 = NSMutableAttributedString(string: transferMessage1)
|
|
let mutableTransferMessage3 = NSMutableAttributedString(string: transferMessage3)
|
|
|
|
let attrs = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 15)]
|
|
let transferMessageInBold = NSMutableAttributedString(string:"\(amount)", attributes:attrs)
|
|
|
|
let mutableTransferMessage = NSMutableAttributedString()
|
|
mutableTransferMessage.append(mutableTransferMessage1)
|
|
mutableTransferMessage.append(transferMessageInBold)
|
|
mutableTransferMessage.append(mutableTransferMessage3)
|
|
|
|
transferLimitMessageLabel.attributedText = mutableTransferMessage
|
|
}
|
|
|
|
/**
|
|
Set transaction limit message
|
|
*/
|
|
func setTransactionLimit(amount:String){
|
|
let transactionLimitMessage1: String = String("Transaction Limit Upto \n")
|
|
let transactionLimitMessage2: String = String(" times per day")
|
|
|
|
let mutableTransactionLimitMessage1 = NSMutableAttributedString(string: transactionLimitMessage1)
|
|
let mutableTransactionLimitMessage2 = NSMutableAttributedString(string: transactionLimitMessage2)
|
|
|
|
let attrs = [NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 15)]
|
|
let transactionLimitMessageInBold = NSMutableAttributedString(string:amount, attributes:attrs)
|
|
|
|
let mutableTransactionLimitMessage = NSMutableAttributedString()
|
|
mutableTransactionLimitMessage.append(mutableTransactionLimitMessage1)
|
|
mutableTransactionLimitMessage.append(transactionLimitMessageInBold)
|
|
mutableTransactionLimitMessage.append(mutableTransactionLimitMessage2)
|
|
|
|
transactionLimit.attributedText = mutableTransactionLimitMessage
|
|
}
|
|
|
|
@IBAction func buttonSavedMoney(_ sender: Any) {
|
|
|
|
guard let navController = self.navigationController else { return }
|
|
|
|
let popOverVC = UIStoryboard(name: "RecipientListViewController", bundle: nil).instantiateViewController(withIdentifier: "savingPopup") as! PopUpSavingViewController
|
|
navController.addChildViewController(popOverVC)
|
|
popOverVC.view.frame = navController.view.bounds
|
|
navController.view.addSubview(popOverVC.view)
|
|
popOverVC.didMove(toParentViewController: navController)
|
|
}
|
|
|
|
/**
|
|
Add done and cancel button
|
|
*/
|
|
func addDoneButtonOnKeyboard()
|
|
{
|
|
let doneToolbar: UIToolbar = UIToolbar(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50))
|
|
doneToolbar.barStyle = .default
|
|
|
|
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
|
|
let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneButtonAction))
|
|
done.tintColor = UIColor(hex: 0xED1C24)
|
|
|
|
let cancel: UIBarButtonItem = UIBarButtonItem(title: "Cancel", style: .done, target: self, action: #selector(self.cancelAction))
|
|
cancel.tintColor = UIColor.black
|
|
|
|
|
|
let items = [cancel, flexSpace, done]
|
|
doneToolbar.items = items
|
|
doneToolbar.sizeToFit()
|
|
|
|
self.textFieldKRW.inputAccessoryView = doneToolbar
|
|
self.textFieldNPR.inputAccessoryView = doneToolbar
|
|
}
|
|
|
|
/**
|
|
Add cancel button in keypad
|
|
*/
|
|
@objc func cancelAction()
|
|
{
|
|
textFieldKRW.text = ""
|
|
textFieldNPR.text = ""
|
|
serviceFeeLabel.text = "Exchange Rate:"
|
|
labelExchangeRate.text = "Service Fee:"
|
|
rewardPointlabel.text = ""
|
|
textFieldNPR.resignFirstResponder()
|
|
textFieldKRW.resignFirstResponder()
|
|
pickerViewCurrency.isHidden = true
|
|
if !buttomCurrencyStatus! {
|
|
buttomCurrencyStatus! = !buttomCurrencyStatus!
|
|
}
|
|
}
|
|
|
|
/**
|
|
Picker view done action button
|
|
*/
|
|
@objc func doneButtonAction()
|
|
{
|
|
self.networkDialogShown = false
|
|
textFieldKRW.resignFirstResponder()
|
|
textFieldNPR.resignFirstResponder()
|
|
|
|
guard textFieldNPR.text != "" || textFieldKRW.text != "" else {
|
|
self.popUpMessageInfo(value: 16, title: "Missing amount", message: "Please enter amount")
|
|
return
|
|
}
|
|
viewContentMain.isHidden = true
|
|
self.startLoading()
|
|
transactionviewmodel.fetchExchangeRate(exchangeData: exchangeData!)
|
|
}
|
|
|
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
|
|
|
if segue.identifier == "reviewTransfer" {
|
|
let reviewViewController
|
|
= segue.destination as! ReviewViewController
|
|
|
|
//ADDED FOR HOMEDELIVERY
|
|
if paymentMode! == paymentModeType.homeDelivery.rawValue {
|
|
if let localRecipient = recipient, let localCalculateBy = calculateBy , let localHomeDetails = homeDetails{
|
|
reviewViewController.transferDetails = transactionviewmodel.getTransferDetailsForHomeDelivery(recipient: localRecipient, paymentMethodId: getPaymentMethodId(), calcBy: localCalculateBy, homeDetails: localHomeDetails)
|
|
}
|
|
} else {
|
|
if let localRecipient = recipient, let localCalculateBy = calculateBy{
|
|
reviewViewController.transferDetails = transactionviewmodel.getTransferDetails(recipient: localRecipient, paymentMethodId: getPaymentMethodId(), calcBy: localCalculateBy)
|
|
}
|
|
}
|
|
reviewViewController.recipient = recipient
|
|
reviewViewController.paymentMode = self.paymentMode
|
|
}
|
|
}
|
|
}
|
|
|
|
extension RecipientTranscationViewController: UITextFieldDelegate {
|
|
|
|
func textFieldDidBeginEditing(_ textField: UITextField) {
|
|
addDoneButtonOnKeyboard()
|
|
buttonSave.isUserInteractionEnabled = false
|
|
buttonSave.alpha = 0.3
|
|
|
|
if textField == textFieldKRW {
|
|
textFieldNPR.text = ""
|
|
} else {
|
|
textFieldKRW.text = ""
|
|
}
|
|
checkScroll()
|
|
}
|
|
|
|
func textFieldDidEndEditing(_ textField: UITextField) {
|
|
|
|
checkScroll()
|
|
|
|
if textField == textFieldKRW {
|
|
|
|
calculateBy = "C"
|
|
if let countryId = recipient?.countryId{
|
|
exchangeData = ["from":"KRW",
|
|
"to":labelCurrency.text!,
|
|
"calcBy": calculateBy!,
|
|
"cAmt": textFieldKRW.text!,
|
|
"payoutmethodid": getPaymentMethodId(),
|
|
"countryId":countryId,
|
|
"sendMoney":true
|
|
]
|
|
}
|
|
|
|
} else {
|
|
if let countryId = recipient?.countryId{
|
|
calculateBy = "P"
|
|
exchangeData = ["from":"KRW",
|
|
"to":labelCurrency.text!,
|
|
"calcBy": calculateBy!,
|
|
"pAmt": textFieldNPR.text!,
|
|
"payoutmethodid": getPaymentMethodId(),
|
|
"countryId":countryId,
|
|
"sendMoney":true
|
|
]
|
|
}
|
|
}
|
|
textFieldKRW.sizeToFit()
|
|
textFieldNPR.sizeToFit()
|
|
}
|
|
|
|
func getWidth(text: String) -> CGFloat
|
|
{
|
|
let txtField = UITextField(frame: .zero)
|
|
txtField.text = text
|
|
txtField.sizeToFit()
|
|
return txtField.frame.size.width
|
|
}
|
|
|
|
override open func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(true)
|
|
}
|
|
|
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString
|
|
string: String) -> Bool {
|
|
|
|
let inputText = (textField.text! as NSString).replacingCharacters(in: range, with: string)
|
|
|
|
let currentText = textField.text ?? ""
|
|
guard let stringRange = Range(range, in: currentText) else { return false }
|
|
|
|
let updatedText = currentText.replacingCharacters(in: stringRange, with: string)
|
|
|
|
if updatedText.count != 0 {
|
|
if textField == textFieldKRW {
|
|
if inputText.isDouble() {
|
|
if Double(inputText)! <= transactionviewmodel.getTransferLimit() {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
} else {
|
|
if inputText.isDouble() {
|
|
if Double(inputText)! <= 999999999999999 {
|
|
return true
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
extension RecipientTranscationViewController: UIPickerViewDelegate, UIPickerViewDataSource {
|
|
|
|
func numberOfComponents(in pickerView: UIPickerView) -> Int {
|
|
return 1
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
|
|
return pickerData.count
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
|
|
return pickerData[row]
|
|
}
|
|
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
|
|
|
|
let label = (view as? UILabel) ?? UILabel()
|
|
|
|
label.textColor = UIColor(red:0.29, green:0.29, blue:0.29, alpha:1.0)
|
|
label.textAlignment = .center
|
|
label.font = UIFont.systemFont(ofSize: 18)
|
|
|
|
label.text = pickerData[row]
|
|
|
|
return label
|
|
}
|
|
|
|
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
|
|
buttomCurrencyStatus = true
|
|
pickerViewCurrency.isHidden = true
|
|
dropDownCountryButton.setTitle(pickerData[row] + " ", for: UIControlState.normal)
|
|
labelCurrency.text = pickerData[row]
|
|
|
|
if textFieldKRW.text != "" && textFieldNPR.text != "" {
|
|
textFieldNPR.text = ""
|
|
buttonSave.isUserInteractionEnabled = false
|
|
buttonSave.alpha = 0.3
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
extension RecipientTranscationViewController : ScrollableProtocol {
|
|
var offset: CGFloat {
|
|
get {
|
|
return 160
|
|
}
|
|
}
|
|
|
|
var viewScrolled: Bool {
|
|
get {
|
|
return isScrolled
|
|
}
|
|
}
|
|
|
|
func checkScroll() {
|
|
|
|
if !viewScrolled {
|
|
performScroll(direction: 0)
|
|
isScrolled = !isScrolled
|
|
} else {
|
|
performScroll(direction: 1)
|
|
isScrolled = !isScrolled
|
|
}
|
|
}
|
|
|
|
func registerTapListener() {
|
|
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(clearKeyboard))
|
|
view.addGestureRecognizer(tap)
|
|
}
|
|
|
|
@objc func clearKeyboard() {
|
|
textFieldKRW.resignFirstResponder()
|
|
textFieldNPR.resignFirstResponder()
|
|
|
|
if viewScrolled {
|
|
performScroll(direction: 1)
|
|
isScrolled = !isScrolled
|
|
}
|
|
}
|
|
|
|
func performScroll(direction: Int) {
|
|
if direction == 0 {
|
|
UIView.animate(withDuration: 0.3, animations: {
|
|
self.view.frame = self.view.frame.offsetBy(dx: 0, dy: self.offset * -1)
|
|
})
|
|
} else if direction == 1 {
|
|
UIView.animate(withDuration: 0.3, animations: {
|
|
self.view.frame = self.view.frame.offsetBy(dx: 0, dy: self.offset)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
extension String {
|
|
func isDouble() -> Bool {
|
|
|
|
if let doubleValue = Double(self) {
|
|
|
|
if doubleValue >= 0 {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
}
|