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.

96 lines
2.1 KiB

  1. //
  2. // AddAccountPresenter.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon Devik Kim on 12/04/2019.
  6. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class AddAccountPresenter {
  10. // MARK: Properties
  11. weak var view: AddAccountViewInterface?
  12. var interactor: AddAccountInteractorInput?
  13. var wireframe: AddAccountWireframeInput?
  14. private var model: KFTCModel?
  15. init(with model: KFTCModel?) {
  16. self.model = model
  17. }
  18. // MARK: Converting entities
  19. }
  20. // MARK: AddAccount module interface
  21. extension AddAccountPresenter: AddAccountModuleInterface {
  22. func viewIsReady() {
  23. interactor?.viewIsReady(model: model)
  24. }
  25. func verifyAccount(
  26. customerID: String,
  27. bankCode: String,
  28. accountNumber: String
  29. ) {
  30. if customerID == "" || bankCode == "" || accountNumber == "" {
  31. let error = NSError.init(
  32. domain: "Invalid Bank Account",
  33. code: 0,
  34. message: "Check your bank account information")
  35. view?.failure(error: error)
  36. } else {
  37. view?.startLoading()
  38. interactor?.verifyAccount(
  39. customerID: customerID,
  40. bankCode: bankCode,
  41. accountNumber: accountNumber
  42. )
  43. }
  44. }
  45. func doGetTestURL(url: String, header: [String: String]) {
  46. view?.startLoading()
  47. interactor?.fetchKFTCUrl(url: url, header: header)
  48. }
  49. func goKFTC(url: String, header: [KftcHeader]?) {
  50. wireframe?.pushKFTCViewControllerOf(
  51. url: url.components(separatedBy: .whitespaces).joined(),
  52. header: header)
  53. }
  54. }
  55. // MARK: AddAccount interactor output interface
  56. extension AddAccountPresenter: AddAccountInteractorOutput {
  57. func setModel(model: (bankList: [BankInformation]?, kftcModel: KFTCModel?)) {
  58. view?.setModel(model: model)
  59. }
  60. func failureSetModel(error: Error) {
  61. view?.failureSetModel(error: error)
  62. }
  63. func successVerify() {
  64. view?.endLoading()
  65. view?.successVerify()
  66. }
  67. func failure(error: Error) {
  68. view?.endLoading()
  69. view?.failure(error: error)
  70. }
  71. func successTestURL(url: String) {
  72. view?.endLoading()
  73. view?.successTestURL(url: url)
  74. }
  75. }