// // SetupRecipientInteractor.swift // GME Remit // // Created by InKwon James Kim on 09/08/2019. //Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. // import Foundation class SetupRecipientInteractor { // MARK: Properties weak var output: SetupRecipientInteractorOutput? private let service: SetupRecipientServiceType private let recipient: Recipient? private lazy var nativeCountries = StaticModels().nativeCountries // MARK: Initialization init(service: SetupRecipientServiceType, _ recipient: Recipient?) { self.service = service self.recipient = recipient } } // MARK: SetupRecipient interactor input interface extension SetupRecipientInteractor: SetupRecipientInteractorInput { func fetchCountriesAndServiceTypes() { service.fetchCountriesAndServiceTypes( success: {self.output?.setCoutryServices(with: $0, recipient: self.recipient)}, failure: {self.output?.setError(with: $0)} ) } func fetchDynamicRecipientFields(country: String, paymentMode: String) { service.fetchDynamicReceiverFields( of: country, paymentModeID: paymentMode, success: {self.output?.setDynamicFields(with: $0, nativeCountires: self.nativeCountries)}, failure: {self.output?.setError(with: $0)} ) } func addRecipient(at recipient: Recipient) { service.addRecipient( at: recipient, success: {self.output?.success(with: $0)}, failure: {self.output?.setError(with: $0)} ) } func editRecipient(at recipient: Recipient) { service.editRecipient( at: recipient, success: {self.output?.success(with: $0)}, failure: {self.output?.setError(with: $0)} ) } func validateAccount(with model: ValidateAccountRequest, recipient: Recipient) { service.validateAccount( of: model, success: { if recipient.receiverID == nil { self.addRecipient(at: recipient) } else { self.editRecipient(at: recipient) } }, failure: {self.output?.setError(with:$0)} ) } }