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.

164 lines
5.3 KiB

6 years ago
6 years ago
  1. //
  2. // EditReciepientPresenter.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 28/08/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class EditReciepientPresenter {
  10. // MARK: Properties
  11. var transferReasons: [TransferReason] = []
  12. var relations: [Relation] = []
  13. var countries: [CountryModel] = []
  14. weak var view: EditReciepientViewInterface?
  15. var interactor: EditReciepientInteractorInput?
  16. var wireframe: EditReciepientWireframeInput?
  17. // MARK: Converting entities
  18. func convert(models: [CountryModel]) {
  19. let viewmodels: [SendMoneyCountryViewModel] = models.map({
  20. let viewmodel = SendMoneyCountryViewModel()
  21. viewmodel.name = $0.name
  22. viewmodel.code = $0.code
  23. viewmodel.id = $0.id
  24. viewmodel.proviencesRequired = $0.provienceRequired
  25. viewmodel.proviences = self.convert(models: $0.proviences ?? [])
  26. return viewmodel
  27. })
  28. self.view?.show(countries: viewmodels)
  29. }
  30. func convert(models: [Provience]) -> [SendMoneyProvienceViewModel] {
  31. return models.map({
  32. var viewmodel = SendMoneyProvienceViewModel()
  33. viewmodel.name = $0.name
  34. viewmodel.id = $0.id
  35. viewmodel.districts = self.convert(models: $0.districts ?? [])
  36. return viewmodel
  37. })
  38. }
  39. func convert(models: [District]) -> [SendMoneyDistrictViewModel] {
  40. let viewmodels: [SendMoneyDistrictViewModel] = models.map({
  41. let viewmodel = SendMoneyDistrictViewModel()
  42. viewmodel.name = $0.name
  43. viewmodel.id = $0.id
  44. return viewmodel
  45. })
  46. return viewmodels
  47. }
  48. func convert(models: [TransferReason]) {
  49. let viewmodels: [SendMoneyTransferReasonViewModel] = models.map({
  50. var viewmodel = SendMoneyTransferReasonViewModel()
  51. viewmodel.title = $0.title
  52. viewmodel.id = $0.id
  53. return viewmodel
  54. })
  55. self.view?.show(transferReasons: viewmodels)
  56. }
  57. func convert(models: [Relation]) {
  58. let viewmodels: [SendMoneyRelationViewModel] = models.map({
  59. var viemodel = SendMoneyRelationViewModel()
  60. viemodel.title = $0.title
  61. viemodel.id = $0.id
  62. return viemodel
  63. })
  64. self.view?.show(relations: viewmodels)
  65. }
  66. func convert(model: EditRecipientRecipientViewModel) {
  67. var reciepient = Recipient()
  68. reciepient.recipientId = model.id
  69. reciepient.firstName = model.firstName
  70. reciepient.middleName = model.middleName
  71. reciepient.lastName = model.lastName
  72. reciepient.countryId = model.countryId
  73. reciepient.country = model.country
  74. reciepient.stateId = model.stateId
  75. reciepient.state = model.state
  76. reciepient.district = model.district
  77. reciepient.districtId = model.districtId
  78. reciepient.address = model.address
  79. reciepient.relation = model.relation
  80. reciepient.relationId = model.relationId
  81. reciepient.reason = model.reason
  82. reciepient.reasonId = model.reasonId
  83. reciepient.mobileNumber = model.mobileNumber
  84. reciepient.email = model.email
  85. self.interactor?.save(reciepient: reciepient)
  86. }
  87. func convert(model: Recipient) {
  88. let reciepient = EditRecipientRecipientViewModel()
  89. reciepient.id = model.recipientId
  90. reciepient.firstName = model.firstName
  91. reciepient.middleName = model.middleName
  92. reciepient.lastName = model.lastName
  93. reciepient.country = model.country
  94. reciepient.countryId = model.countryId
  95. reciepient.state = model.state
  96. reciepient.stateId = model.stateId
  97. reciepient.address = model.address
  98. reciepient.relation = model.relation
  99. reciepient.relationId = model.relationId
  100. reciepient.reason = model.reason
  101. reciepient.reasonId = model.reasonId
  102. reciepient.mobileNumber = model.mobileNumber
  103. reciepient.email = model.email
  104. self.view?.show(recipient: reciepient)
  105. }
  106. }
  107. // MARK: EditReciepient module interface
  108. extension EditReciepientPresenter: EditReciepientModuleInterface {
  109. func viewIsReady() {
  110. self.view?.showLoading()
  111. self.interactor?.viewIsReady()
  112. }
  113. func save(model: EditRecipientRecipientViewModel) {
  114. self.convert(model: model)
  115. }
  116. }
  117. // MARK: EditReciepient interactor output interface
  118. extension EditReciepientPresenter: EditReciepientInteractorOutput {
  119. func show(model: SendMoneyModel?) {
  120. self.transferReasons = model?.transferReasons ?? []
  121. self.relations = model?.relations ?? []
  122. self.countries = model?.countries ?? []
  123. self.view?.hideLoading()
  124. self.convert(models: self.countries)
  125. self.convert(models: self.transferReasons)
  126. self.convert(models: self.relations)
  127. }
  128. func show(error: Error) {
  129. self.view?.hideLoading()
  130. self.view?.show(error: error.localizedDescription)
  131. }
  132. func success() {
  133. print("successfully added")
  134. self.wireframe?.dismiss()
  135. }
  136. func show(recipient: Recipient) {
  137. self.convert(model: recipient)
  138. }
  139. }