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.

103 lines
2.4 KiB

5 years ago
  1. //
  2. // AutoDebitInteractor.swift
  3. // GME Remit
  4. //
  5. // Created by Mac on 12/19/18.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class AutoDebitInteractor {
  10. // MARK: Properties
  11. weak var output: AutoDebitInteractorOutput?
  12. private let service: AutoDebitServiceType
  13. // MARK: Initialization
  14. init(service: AutoDebitServiceType) {
  15. self.service = service
  16. }
  17. // MARK: Converting entities
  18. }
  19. // MARK: AutoDebit interactor input interface
  20. extension AutoDebitInteractor: AutoDebitInteractorInput {
  21. func fetchKFTCBankAccountList() {
  22. guard let userId = GMEDB.shared.user.string(.userId)
  23. else {
  24. return
  25. }
  26. self.service.fetchAccountList(
  27. username: userId,
  28. success: { [weak self] in
  29. guard let `self` = self else { return }
  30. self.output?.setModel(with: $0)
  31. },
  32. failure: { [weak self] in
  33. guard let `self` = self else { return }
  34. self.output?.didFailSetModel(with: $0)
  35. }
  36. )
  37. }
  38. func deleteKFTCBankAccount(of username: String, with account: Account) {
  39. self.service.deleteAccount(
  40. username: username,
  41. account: account,
  42. success: {[weak self] in
  43. guard let `self` = self else { return }
  44. self.output?.didDeleteAccount()
  45. },
  46. failure: {[weak self] in
  47. guard let `self` = self else { return }
  48. self.output?.didFailDeleteAccount(with: $0)
  49. }
  50. )
  51. }
  52. func refreshToken(language: KftcLanguage?) {
  53. guard
  54. let email = GMEDB.shared.user.string(.email),
  55. let language = language else { return }
  56. let service2 = AddAccountService()
  57. service.refreshTokenStep1(
  58. username: email,
  59. success: { response in
  60. let url = response?.url?.replacingOccurrences(
  61. of: "&lang=", with: "&lang=\(language.key ?? "eng")"
  62. ) ?? ""
  63. var header = [String: String]()
  64. response?.header?.forEach({
  65. header[$0.key ?? ""] = $0.value ?? ""
  66. })
  67. service2.fetchKftcUrlService(
  68. url: url,
  69. header: header,
  70. success: {
  71. self.output?.refreshTokenSuccess(header: response?.header, url: $0)
  72. },
  73. failure: {
  74. self.output?.refreshTokenError(with: $0)
  75. }
  76. )
  77. },
  78. failure: {
  79. self.output?.refreshTokenError(with: $0)
  80. }
  81. )
  82. }
  83. }