From c9f200877d8df795d8e04157b63bdafd03a71723 Mon Sep 17 00:00:00 2001 From: gme_2 Date: Thu, 30 Aug 2018 15:53:27 +0900 Subject: [PATCH] seperate view model added for sendmoney exchange rate for currencies --- GMERemittance.xcodeproj/project.pbxproj | 8 +++ .../SendMoneyExchangeRateViewController.swift | 64 ++++++++++++++++++- .../View/SendMoneyParentViewController.swift | 15 +++-- .../SendMoneyPaymentModeViewController.swift | 8 +++ 4 files changed, 87 insertions(+), 8 deletions(-) diff --git a/GMERemittance.xcodeproj/project.pbxproj b/GMERemittance.xcodeproj/project.pbxproj index 15920d15..29efabbb 100644 --- a/GMERemittance.xcodeproj/project.pbxproj +++ b/GMERemittance.xcodeproj/project.pbxproj @@ -1846,6 +1846,13 @@ path = ViewModels; sourceTree = ""; }; + D94B1BA52137C5B800A29751 /* CurrencyWithFlagPicker */ = { + isa = PBXGroup; + children = ( + ); + path = CurrencyWithFlagPicker; + sourceTree = ""; + }; D95B5E2421311056000C0B33 /* GmeContacts */ = { isa = PBXGroup; children = ( @@ -1940,6 +1947,7 @@ D96222FF212BD5E700B7A115 /* Library */ = { isa = PBXGroup; children = ( + D94B1BA52137C5B800A29751 /* CurrencyWithFlagPicker */, D90A9D61213696E400A96E45 /* BankPicker */, D90A9D562136942300A96E45 /* BankBranchPicker */, D9CB49812132A58C00B7A124 /* ItemPickerView */, diff --git a/GMERemittance/Module/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift b/GMERemittance/Module/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift index 0cef2fad..d57a459a 100644 --- a/GMERemittance/Module/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift +++ b/GMERemittance/Module/SendMoneyExchangeRate/User Interface/View/SendMoneyExchangeRateViewController.swift @@ -8,6 +8,11 @@ import UIKit +class SendMoneyExchangeRateCurrencyViewModel{ + var countryCode: String? + var currency: String? +} + class SendMoneyExchangeRateViewController: UIViewController { // MARK: IBOutlets @@ -34,7 +39,37 @@ class SendMoneyExchangeRateViewController: UIViewController { // MARK: Properties var presenter: SendMoneyExchangeRateModuleInterface? - var reciepient: Recipient? + var currencyInfoViewModel: [SendMoneyExchangeRateCurrencyViewModel]? + + var reciepient: Recipient? { + didSet { + self.setCountryFlag(countryCode: self.reciepient?.countryCode ?? "") + } + } + + var requestModel: SendMoneyRequestModel? { + didSet { + let deliveryMethod = self.requestModel?.paymemtMode + if (deliveryMethod?.bankRequired ?? "false").lowercased() == "true" { + self.currencies = self.requestModel?.bank?.payCurrency ?? [] + }else { + self.currencies = deliveryMethod?.payCurrency ?? [] + } + } + } + + var currencies: [String]? { + didSet { + let models: [SendMoneyExchangeRateCurrencyViewModel] = + (self.currencies ?? []).map({ + let viewmodel = SendMoneyExchangeRateCurrencyViewModel() + viewmodel.countryCode = self.reciepient?.countryCode ?? "" + viewmodel.currency = $0 + return viewmodel + }) + self.currencyInfoViewModel = models + } + } var hudDelegate: HUDStatusDelegate? var actionDelegate: SendMoneyExchangeRateActionDelegate? @@ -56,9 +91,36 @@ class SendMoneyExchangeRateViewController: UIViewController { private func setup() { // all setup should be done here + self.setupTargets() self.configureViews() } + 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!) + } + + @objc func showCountryList(_ sender: UITapGestureRecognizer) { + print("show Country List") + let viewcontroller = UIStoryboard.init(name: "TableViewPicker", bundle: nil).instantiateViewController(withIdentifier: "TablePickerViewController") as! TablePickerViewController +// viewcontroller.data = self.exchangeRateModels ?? [] + viewcontroller.type = TablePickerViewTitle.country +// viewcontroller.doneAction = self.countrySelected + + self.present(viewcontroller, animated: true, completion: nil) + } + private func configureViews() { let dropDownImage = #imageLiteral(resourceName: "dropdown_white").withRenderingMode(UIImageRenderingMode.alwaysTemplate) let image = dropDownImage diff --git a/GMERemittance/Module/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift b/GMERemittance/Module/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift index f760c71f..b077ee39 100644 --- a/GMERemittance/Module/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift +++ b/GMERemittance/Module/SendMoneyParent/User Interface/View/SendMoneyParentViewController.swift @@ -14,9 +14,9 @@ protocol HUDStatusDelegate { } protocol SendMoneyPaymentModeActionDelegate { - func selected(bank: SendMoneyBank) - func selected(branch: SendMoneyBankBranch) - func selected(payoutMethod: SendMoneyPayoutMode) + func selected(bank: SendMoneyBank?) + func selected(branch: SendMoneyBankBranch?) + func selected(payoutMethod: SendMoneyPayoutMode?) func added(acountNumber: String) func continueToExchangeAction() } @@ -196,7 +196,8 @@ class SendMoneyParentViewController: UIViewController { } func addExchangeViewController() { - guard let exchangeViewController = self.exchangeViewController else {return} + guard let exchangeViewController = self.exchangeViewController as? SendMoneyExchangeRateViewController else {return} + exchangeViewController.requestModel = self.requestModel self.addChildViewController(exchangeViewController) UIView.transition(with: self.containerView, duration: 0.33, options: .transitionCrossDissolve, animations: { self.containerView.addSubview(exchangeViewController.view) @@ -237,15 +238,15 @@ extension SendMoneyParentViewController: HUDStatusDelegate { } extension SendMoneyParentViewController: SendMoneyPaymentModeActionDelegate { - func selected(bank: SendMoneyBank) { + func selected(bank: SendMoneyBank?) { self.requestModel?.bank = bank } - func selected(branch: SendMoneyBankBranch) { + func selected(branch: SendMoneyBankBranch?) { self.requestModel?.branch = branch } - func selected(payoutMethod: SendMoneyPayoutMode) { + func selected(payoutMethod: SendMoneyPayoutMode?) { self.requestModel?.paymemtMode = payoutMethod } diff --git a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift index 200efebe..7cbf7482 100644 --- a/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift +++ b/GMERemittance/Module/SendMoneyPaymentMode/User Interface/View/SendMoneyPaymentModeViewController.swift @@ -124,6 +124,14 @@ class SendMoneyPaymentModeViewController: UIViewController { } if shouldGoNextPage { + self.actionDelegate?.selected(payoutMethod: self.selectedPayoutMode) + + if shouldValidateBank() { self.actionDelegate?.selected(bank: self.selectedBank) } + + if shouldValidateBranch() { self.actionDelegate?.selected(branch: self.selectedBranch) } + + if shouldValidateAccount() { self.actionDelegate?.added(acountNumber: accountTextField.text!) } + self.goToExchangeView() }else { self.show(error: errors)