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.
 
 
 
 

211 lines
8.1 KiB

//
// SendMoneyExchangeRateViewController.swift
// GMERemittance
//
// Created by gme_2 on 28/08/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
class SendMoneyExchangeRateCurrencyViewModel{
var countryCode: String?
var currency: String?
}
class SendMoneyExchangeRateViewController: UIViewController {
// MARK: IBOutlets
@IBOutlet weak var exchangeBackground1: UIView!
@IBOutlet weak var exchangeBackground2: UIView!
@IBOutlet weak var dropDownImageView: UIImageView!
@IBOutlet weak var backgroundViewCountryLabel1: UIView!
@IBOutlet weak var backgroundViewCountryLabel2: UIView!
@IBOutlet weak var countryListStackView: UIStackView!
@IBOutlet weak var countryCodeLabel: UILabel!
@IBOutlet weak var countryFlagImage: UIImageView!
@IBOutlet weak var continueButton: UIButton!
@IBOutlet weak var senderTextField: UITextField!
@IBOutlet weak var reciepientTextField: UITextField!
@IBOutlet weak var transferFeeInfoLabel: UILabel!
var countryListTapGuesture: UITapGestureRecognizer?
// MARK: Properties
var presenter: SendMoneyExchangeRateModuleInterface?
var currencyInfoViewModel: [SendMoneyExchangeRateCurrencyViewModel]? {
didSet {
self.selectedCurrencyViewModel = self.currencyInfoViewModel?.first
}
}
var reciepient: Recipient?
var exchangeRateModel: SendMoneyExchangeRateModel? {
didSet {
self.reciepientTextField.text = self.exchangeRateModel?.recipientAmount
self.senderTextField.text = self.exchangeRateModel?.senderAmount
self.transferFeeInfoLabel.text = self.exchangeRateModel?.transferFee
self.transferFeeInfoLabel.isHidden = false
}
}
var requestModel: SendMoneyRequestModel?
var calcBy = ""
var currencies: [String]? {
didSet {
self.setCurrencyLabel(currency: self.currencies?.first ?? "")
let models: [SendMoneyExchangeRateCurrencyViewModel] =
(self.currencies ?? []).map({
let viewmodel = SendMoneyExchangeRateCurrencyViewModel()
viewmodel.countryCode = self.reciepient?.countryCode ?? ""
viewmodel.currency = $0
return viewmodel
})
self.currencyInfoViewModel = models
}
}
var selectedCurrencyViewModel: SendMoneyExchangeRateCurrencyViewModel? {
didSet {
self.setCurrencyLabel(currency: selectedCurrencyViewModel?.currency ?? "")
}
}
var hudDelegate: HUDStatusDelegate?
var actionDelegate: SendMoneyExchangeRateActionDelegate?
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
self.setup()
}
// MARK: IBActions
@IBAction func continueButton(_ sender: UIButton) {
let senderAmount = self.senderTextField.text!
let reciepientAmount = self.reciepientTextField.text!
let recipientCurrency = self.selectedCurrencyViewModel?.currency
let reciepientCountryId = self.reciepient?.countryId
// let paymentMethod = self.requestModel?.paymemtMode?.mode
let paymentMethod = "WALLET"
let paymentMethodId = self.requestModel?.paymemtMode?.id
let payoutPartner = self.requestModel?.paymemtMode?.payoutPartner
let defaults = UserDefaults.standard
let myUsername = defaults.string(forKey: "com.gmeremit.username") ?? ""
let bankId = self.requestModel?.bank?.id //bank id if selected bank
let reciepientCountryName = self.reciepient?.country
self.calculate(senderAmt: senderAmount, recieverAmt: reciepientAmount, recieverCurrency: recipientCurrency, recieverCountryName: reciepientCountryName, recieverCountryId: reciepientCountryId, paymentMethod: paymentMethod, paymentMethodId: paymentMethodId, calcBy: calcBy, payoutPartner: payoutPartner, userId: myUsername, bankId: bankId)
// self.actionDelegate?.continueToVerificationAction()
}
// MARK: Other Functions
private func setup() {
// all setup should be done here
self.setupTargets()
self.configureViews()
calcBy = "c"
}
private func setCountryFlag(countryCode: String) {
let flag = CountryInfo().getFlag(for: countryCode)
self.countryFlagImage.image = flag
}
private func setCurrencyLabel(currency: String) {
self.countryCodeLabel.text = currency.uppercased()
}
private func setupTargets() {
let tapGuesture = UITapGestureRecognizer(target: self, action: #selector(self.showCountryList(_:)))
self.countryListTapGuesture = tapGuesture
self.countryListStackView.addGestureRecognizer(self.countryListTapGuesture!)
self.reciepientTextField.addTarget(self, action: #selector(self.textChanged(sender:)), for: UIControlEvents.editingChanged)
self.senderTextField.addTarget(self, action: #selector(self.textChanged(sender:)), for: UIControlEvents.editingChanged)
}
@objc func showCountryList(_ sender: UITapGestureRecognizer) {
print("show Country List")
let viewcontroller = UIStoryboard.init(name: "CurrencyPicker", bundle: nil).instantiateViewController(withIdentifier: "CurrencyPickerViewController") as! CurrencyPickerViewController
viewcontroller.data = self.currencyInfoViewModel ?? []
viewcontroller.type = PickerTitle.currency
viewcontroller.doneAction = self.currencySelected
self.present(viewcontroller, animated: true, completion: nil)
}
func currencySelected(models: [SendMoneyExchangeRateCurrencyViewModel?]) {
if let model = models.first {
self.selectedCurrencyViewModel = model
}
}
private func configureViews() {
self.transferFeeInfoLabel.isHidden = true
let dropDownImage = #imageLiteral(resourceName: "dropdown_white").withRenderingMode(UIImageRenderingMode.alwaysTemplate)
let image = dropDownImage
self.dropDownImageView.image = image
self.dropDownImageView.tintColor = UIColor.white
self.setCountryFlag(countryCode: self.reciepient?.countryCode ?? "")
let deliveryMethod = self.requestModel?.paymemtMode
if (deliveryMethod?.bankRequired ?? "false").lowercased() == "true" {
self.currencies = self.requestModel?.bank?.payCurrency ?? []
}else {
self.currencies = deliveryMethod?.payCurrency ?? []
}
}
func calculate(senderAmt: String?, senderCurrency: String? = "KRW", recieverAmt: String?, recieverCurrency: String?, recieverCountryName: String?, recieverCountryId: String?, paymentMethod: String?, paymentMethodId: String? ,calcBy: String?, senderCountryId: String? = "118", payoutPartner: String?, userId: String?, bankId: String?) {
self.presenter?.calculate(senderAmt: senderAmt, senderCurrency: senderCurrency, recieverAmt: recieverAmt, recieverCurrency: recieverCurrency, recieverCountryName: recieverCountryName, recieverCountryId: recieverCountryId, paymentMethod: paymentMethod, paymentMethodId: paymentMethodId, calcBy: calcBy, senderCountryId: senderCountryId, payoutPartner: payoutPartner, userId: userId, bankId: bankId)
}
@objc private func textChanged(sender: UITextField) {
switch sender {
case senderTextField:
self.reciepientTextField.text = ""
self.calcBy = "c"
case reciepientTextField:
self.senderTextField.text = ""
self.calcBy = "p"
default:
break
}
}
}
// MARK: SendMoneyExchangeRateViewInterface
extension SendMoneyExchangeRateViewController: SendMoneyExchangeRateViewInterface {
func show(model: SendMoneyExchangeRateModel) {
self.exchangeRateModel = model
}
func show(error: String) {
self.alert(message: error)
}
func showLoading() {
self.hudDelegate?.showLoading()
}
func hideLoading() {
self.hudDelegate?.hideLoading()
}
}