// // EditReciepientPresenter.swift // GMERemittance // // Created by gme_2 on 28/08/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import Foundation class EditReciepientPresenter { // MARK: Properties var transferReasons: [TransferReason] = [] var relations: [Relation] = [] var countries: [CountryModel] = [] weak var view: EditReciepientViewInterface? var interactor: EditReciepientInteractorInput? var wireframe: EditReciepientWireframeInput? // MARK: Converting entities func convert(models: [CountryModel]) { let viewmodels: [SendMoneyCountryViewModel] = models.map({ let viewmodel = SendMoneyCountryViewModel() viewmodel.name = $0.name viewmodel.code = $0.code viewmodel.id = $0.id viewmodel.proviencesRequired = $0.provienceRequired viewmodel.proviences = self.convert(models: $0.proviences ?? []) return viewmodel }) self.view?.show(countries: viewmodels) } func convert(models: [Provience]) -> [SendMoneyProvienceViewModel] { return models.map({ var viewmodel = SendMoneyProvienceViewModel() viewmodel.name = $0.name viewmodel.id = $0.id viewmodel.districts = self.convert(models: $0.districts ?? []) return viewmodel }) } func convert(models: [District]) -> [SendMoneyDistrictViewModel] { let viewmodels: [SendMoneyDistrictViewModel] = models.map({ let viewmodel = SendMoneyDistrictViewModel() viewmodel.name = $0.name viewmodel.id = $0.id return viewmodel }) return viewmodels } func convert(models: [TransferReason]) { let viewmodels: [SendMoneyTransferReasonViewModel] = models.map({ var viewmodel = SendMoneyTransferReasonViewModel() viewmodel.title = $0.title viewmodel.id = $0.id return viewmodel }) self.view?.show(transferReasons: viewmodels) } func convert(models: [Relation]) { let viewmodels: [SendMoneyRelationViewModel] = models.map({ var viemodel = SendMoneyRelationViewModel() viemodel.title = $0.title viemodel.id = $0.id return viemodel }) self.view?.show(relations: viewmodels) } func convert(model: EditRecipientRecipientViewModel) { var reciepient = Recipient() reciepient.recipientId = model.id reciepient.firstName = model.firstName reciepient.middleName = model.middleName reciepient.lastName = model.lastName reciepient.countryId = model.countryId reciepient.country = model.country reciepient.stateId = model.stateId reciepient.state = model.state reciepient.district = model.district reciepient.districtId = model.districtId reciepient.address = model.address reciepient.relation = model.relation reciepient.relationId = model.relationId reciepient.reason = model.reason reciepient.reasonId = model.reasonId reciepient.mobileNumber = model.mobileNumber reciepient.email = model.email self.interactor?.save(reciepient: reciepient) } func convert(model: Recipient) { let reciepient = EditRecipientRecipientViewModel() reciepient.id = model.recipientId reciepient.firstName = model.firstName reciepient.middleName = model.middleName reciepient.lastName = model.lastName reciepient.country = model.country reciepient.countryId = model.countryId reciepient.state = model.state reciepient.stateId = model.stateId reciepient.address = model.address reciepient.relation = model.relation reciepient.relationId = model.relationId reciepient.reason = model.reason reciepient.reasonId = model.reasonId reciepient.mobileNumber = model.mobileNumber reciepient.email = model.email self.view?.show(recipient: reciepient) } } // MARK: EditReciepient module interface extension EditReciepientPresenter: EditReciepientModuleInterface { func viewIsReady() { self.view?.showLoading() self.interactor?.viewIsReady() } func save(model: EditRecipientRecipientViewModel) { self.convert(model: model) } } // MARK: EditReciepient interactor output interface extension EditReciepientPresenter: EditReciepientInteractorOutput { func show(model: SendMoneyModel?) { self.transferReasons = model?.transferReasons ?? [] self.relations = model?.relations ?? [] self.countries = model?.countries ?? [] self.view?.hideLoading() self.convert(models: self.countries) self.convert(models: self.transferReasons) self.convert(models: self.relations) } func show(error: Error) { self.view?.hideLoading() self.view?.show(error: error.localizedDescription) } func success() { print("successfully added") self.wireframe?.dismiss() } func show(recipient: Recipient) { self.convert(model: recipient) } }