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.
325 lines
13 KiB
325 lines
13 KiB
//
|
|
// ResendExchangeViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by gme_2 on 18/03/2019.
|
|
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class ResendExchangeViewController: UIViewController {
|
|
|
|
|
|
// MARK: IBOutlets
|
|
|
|
@IBOutlet weak var exchangeBackground1: UIView!
|
|
@IBOutlet weak var exchangeBackground2: UIView!
|
|
@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!
|
|
@IBOutlet weak var exchangeRateLabel: UILabel!
|
|
@IBOutlet weak var exchangeInfoStackView: UIStackView!
|
|
|
|
@IBOutlet weak var youSendTitleLabel: UILabel!
|
|
@IBOutlet weak var recipientGetsTitleLabel: UILabel!
|
|
|
|
|
|
|
|
// MARK: Properties
|
|
|
|
var reciepient: Recipient? {
|
|
didSet {
|
|
self.requestModel?.reciepient = reciepient
|
|
}
|
|
}
|
|
var requestModel: ResendRequestModel?
|
|
var transactionId: String?
|
|
|
|
var resendInfoModel: ResendDetail? {
|
|
didSet {
|
|
self.senderTextField.text = Utility.getCommaSeperatedStringWithDecimal(numberString: resendInfoModel?.exchangeRate?.cAmount ?? "")
|
|
self.reciepientTextField.text = Utility.getCommaSeperatedStringWithDecimal(numberString: resendInfoModel?.exchangeRate?.pAmount ?? "")
|
|
self.calcBy = resendInfoModel?.exchangeRate?.calcBy ?? ""
|
|
guard let reciever = resendInfoModel?.receiver else {return}
|
|
self.reciepient = self.convertReciepient(model: reciever)
|
|
self.setCountryFlag(countryCode: self.resendInfoModel?.receiver?.rCountryCode ?? "")
|
|
}
|
|
}
|
|
|
|
|
|
var exchangeRateModel: SendMoneyExchangeRateModel? {
|
|
didSet {
|
|
self.reciepientTextField.text = Utility.getCommaSeperatedStringWithDecimal(numberString: self.exchangeRateModel?.recipientAmount ?? "")
|
|
self.senderTextField.text = Utility.getCommaSeperatedStringWithDecimal(numberString: self.exchangeRateModel?.senderAmount ?? "")
|
|
let transferFee = self.exchangeRateModel?.transferFee ?? ""
|
|
self.transferFeeInfoLabel.text = transferFee + "(" + "transfer_fee_included_text".localized() + ")"
|
|
let exchangeRate = self.exchangeRateModel?.exchangeRate ?? ""
|
|
self.exchangeRateLabel.text = exchangeRate + " (" + "current_exchange_rate_text".localized() + ")"
|
|
self.countryCodeLabel.text = exchangeRateModel?.reciepientCurrency
|
|
UIView.animate(withDuration: 0.33) {
|
|
self.transferFeeInfoLabel.isHidden = false
|
|
self.exchangeRateLabel.isHidden = false
|
|
self.exchangeInfoStackView.isHidden = false
|
|
self.transferFeeInfoLabel.alpha = 1
|
|
self.exchangeRateLabel.alpha = 1
|
|
self.exchangeInfoStackView.alpha = 1
|
|
}
|
|
|
|
self.action = ._continue
|
|
self.requestModel?.exchangeRateDetail = exchangeRateModel
|
|
}
|
|
}
|
|
|
|
var presenter: ResendExchangeModuleInterface?
|
|
var calcBy = ""
|
|
|
|
var action: ActionBehaviour? {
|
|
didSet {
|
|
if let _action = action {
|
|
switch _action {
|
|
case .calculate:
|
|
self.continueButton.setTitle("calculate_text".localized(), for: .normal)
|
|
case ._continue:
|
|
self.continueButton.setTitle("continue_text".localized(), for: .normal)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var actionDelegate: SendMoneyExchangeRateActionDelegate?
|
|
var selectedCurrencyViewModel: SendMoneyExchangeRateCurrencyViewModel?
|
|
|
|
// MARK: VC's Life cycle
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.setup()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationItem.title = "resend_money_text".localized()
|
|
initialSetup()
|
|
self.presenter?.viewIsReady()
|
|
self.action = ActionBehaviour.calculate
|
|
}
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
super.viewWillDisappear(animated)
|
|
self.navigationItem.title = ""
|
|
}
|
|
|
|
// MARK: IBActions
|
|
@IBAction func continueButton(_ sender: UIButton) {
|
|
self.view.endEditing(true)
|
|
if let _action = action {
|
|
switch _action {
|
|
case .calculate:
|
|
self.calculate()
|
|
case ._continue:
|
|
// todo
|
|
self.showReceiverDetailPage()
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// MARK: Other Functions
|
|
|
|
private func setup() {
|
|
// all setup should be done here
|
|
initialSetup()
|
|
setupTargets()
|
|
setupView()
|
|
configureLanguage()
|
|
}
|
|
|
|
private func configureLanguage() {
|
|
self.recipientGetsTitleLabel.text = "recepient_gets_text".localized()
|
|
self.youSendTitleLabel.text = "you_send_text".localized()
|
|
|
|
}
|
|
|
|
|
|
func setupView() {
|
|
[backgroundViewCountryLabel1, backgroundViewCountryLabel2].forEach({
|
|
$0?.layer.cornerRadius = 5
|
|
})
|
|
|
|
[exchangeBackground1, exchangeBackground2].forEach({
|
|
$0?.layer.borderWidth = 1
|
|
$0?.layer.borderColor = UIColor.init(hex: "#E0E0E0").cgColor
|
|
$0?.layer.cornerRadius = 5
|
|
})
|
|
}
|
|
|
|
private func showReceiverDetailPage() {
|
|
|
|
let sendmoneyModel = self.convertModel()
|
|
if let navigation = self.navigationController, let reciepient = self.reciepient {
|
|
let wireframe = SendMoneyVerificationWireframe()
|
|
wireframe.openVerification(reciepient: reciepient, model: sendmoneyModel, source: navigation)
|
|
}
|
|
}
|
|
|
|
func convertReciepient(model: ResendReceiver) -> Recipient {
|
|
var reciepient = Recipient()
|
|
reciepient.firstName = model.rFullName
|
|
reciepient.recipientId = self.resendInfoModel?.remitDetial?.ReceiverId
|
|
reciepient.reasonId = self.resendInfoModel?.remitDetial?.PurposeOfRemittance
|
|
reciepient.relationId = self.resendInfoModel?.remitDetial?.RelWithSender
|
|
reciepient.address = model.rAddress
|
|
reciepient.country = model.rCountry
|
|
reciepient.mobileNumber = model.rMobile
|
|
return reciepient
|
|
}
|
|
|
|
|
|
private func convertModel() -> SendMoneyRequestModel {
|
|
let model = SendMoneyRequestModel()
|
|
self.exchangeRateModel?.calcBy = self.calcBy
|
|
self.exchangeRateModel?.autodebitSendingAmount = self.senderTextField.text!.stringRemovingComma()
|
|
model.exchangeRateDetail = self.exchangeRateModel
|
|
model.autoDebitAccount = self.requestModel?.autoDebitAccount
|
|
|
|
/* SendMoneyPayoutMode */
|
|
|
|
// "deliveryMethodId": model.paymemtMode?.id ?? "",
|
|
// "payOutPartner": model.paymemtMode?.payoutPartner ?? "",
|
|
// "ReceiverAccountNo": model.paymemtMode?.accountNumber ?? "",
|
|
|
|
|
|
let paymentMode = SendMoneyPayoutMode()
|
|
paymentMode.id = self.resendInfoModel?.remitDetial?.DeliveryMethodId
|
|
paymentMode.payoutPartner = self.resendInfoModel?.remitDetial?.PayOutPartner
|
|
paymentMode.accountNumber = self.resendInfoModel?.remitDetial?.ReceiverAccountNo
|
|
paymentMode.mode = self.resendInfoModel?.receiver?.deliveryMethod
|
|
model.paymemtMode = paymentMode
|
|
|
|
|
|
/* SendMoneyBank */
|
|
// "pAgent": model.bank?.id ?? "",
|
|
|
|
let bank = SendMoneyBank()
|
|
bank.id = self.resendInfoModel?.remitDetial?.PAgent
|
|
bank.name = self.requestModel?.transaction?.bankName
|
|
model.bank = bank
|
|
|
|
/* SendMoneyBankBranch */
|
|
// branch
|
|
// "pBranch": model.branch?.id ?? "",
|
|
let branch = SendMoneyBankBranch()
|
|
branch.id = self.resendInfoModel?.remitDetial?.PBranch
|
|
model.branch = branch
|
|
return model
|
|
}
|
|
|
|
private func initialSetup() {
|
|
|
|
self.exchangeRateModel = nil
|
|
self.exchangeRateLabel.isHidden = true
|
|
self.exchangeRateLabel.alpha = 0
|
|
self.transferFeeInfoLabel.isHidden = true
|
|
self.transferFeeInfoLabel.alpha = 0
|
|
self.exchangeInfoStackView.isHidden = true
|
|
exchangeInfoStackView.alpha = 0
|
|
self.setCountryFlag(countryCode: self.reciepient?.countryCode ?? "")
|
|
let deliveryMethod = self.requestModel?.paymemtMode
|
|
}
|
|
|
|
|
|
|
|
private func setCountryFlag(countryCode: String) {
|
|
let flag = CountryInfo().getFlag(for: countryCode)
|
|
self.countryFlagImage.image = flag
|
|
}
|
|
|
|
private func setupTargets() {
|
|
self.reciepientTextField.addTarget(self, action: #selector(self.textChanged(sender:)), for: UIControlEvents.editingChanged)
|
|
|
|
self.senderTextField.addTarget(self, action: #selector(self.textChanged(sender:)), for: UIControlEvents.editingChanged)
|
|
}
|
|
|
|
func calculate() {
|
|
let senderAmount = self.senderTextField.text!
|
|
let reciepientAmount = self.reciepientTextField.text!
|
|
self.calculateExchangeRate(senderAmount: senderAmount, reciepientAmount: reciepientAmount, calcBy: self.calcBy)
|
|
}
|
|
|
|
func calculateExchangeRate(senderAmount: String, reciepientAmount: String, calcBy: String) {
|
|
let senderAmount = senderAmount // send sAmt amount
|
|
let reciepientAmount = reciepientAmount
|
|
let recipientCurrency = self.resendInfoModel?.exchangeRate?.pCurrency
|
|
let reciepientCountryId = self.resendInfoModel?.exchangeRate?.pCountryId
|
|
let paymentMethod = self.requestModel?.autoDebitAccount?.type
|
|
let paymentMethodId = self.resendInfoModel?.exchangeRate?.serviceType
|
|
let payoutPartner = self.resendInfoModel?.exchangeRate?.payoutPartner
|
|
let myUsername = Utility.getMyUserName()
|
|
let bankId = self.resendInfoModel?.exchangeRate?.payoutAgent
|
|
let reciepientCountryName = self.resendInfoModel?.exchangeRate?.pCountryName
|
|
|
|
self.calculate(senderAmt: senderAmount, recieverAmt: reciepientAmount, recieverCurrency: recipientCurrency, recieverCountryName: reciepientCountryName, recieverCountryId: reciepientCountryId, paymentMethod: paymentMethod, paymentMethodId: paymentMethodId, calcBy: calcBy, payoutPartner: payoutPartner, userId: myUsername, bankId: bankId)
|
|
}
|
|
|
|
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) {
|
|
self.action = .calculate
|
|
switch sender {
|
|
case senderTextField:
|
|
self.reciepientTextField.text = ""
|
|
self.calcBy = "c"
|
|
senderTextField.text = Utility.getCommaSeperatedString(numberString: senderTextField.text!)
|
|
case reciepientTextField:
|
|
self.senderTextField.text = ""
|
|
self.calcBy = "p"
|
|
reciepientTextField.text = Utility.getCommaSeperatedString(numberString: reciepientTextField.text!)
|
|
default:
|
|
break
|
|
}
|
|
self.exchangeRateModel?.calcBy = calcBy
|
|
}
|
|
}
|
|
|
|
// MARK: ResendExchangeViewInterface
|
|
extension ResendExchangeViewController: ResendExchangeViewInterface {
|
|
func show(model: ResendDetail) {
|
|
self.resendInfoModel = model
|
|
self.calculateExchangeRate(senderAmount: self.senderTextField.text!, reciepientAmount: self.reciepientTextField.text!, calcBy: self.calcBy)
|
|
}
|
|
|
|
func show(error: String) {
|
|
self.alert(message: error, title: nil) {
|
|
self.navigationController?.popViewController(animated: true)
|
|
}
|
|
}
|
|
|
|
func showLoading() {
|
|
self.showProgressHud()
|
|
}
|
|
|
|
func hideLoading() {
|
|
self.hideProgressHud()
|
|
}
|
|
|
|
func show(model: SendMoneyExchangeRateModel) {
|
|
self.exchangeRateModel = model
|
|
}
|
|
}
|
|
|
|
extension ResendExchangeViewController: FetchSendMoneyExchangeRateService {
|
|
|
|
}
|