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.
 
 
 
 

135 lines
4.1 KiB

//
// AddReciepientPresenter.swift
// GMERemittance
//
// Created by gme_2 on 26/08/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class AddReciepientPresenter {
// MARK: Properties
var transferReasons: [TransferReason] = []
var relations: [Relation] = []
var countries: [CountryModel] = []
weak var view: AddReciepientViewInterface?
var interactor: AddReciepientInteractorInput?
var wireframe: AddReciepientWireframeInput?
// 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: ReceipientViewModel) {
var reciepient = Recipient()
reciepient.firstName = model.firstName
reciepient.middleName = model.middleName
reciepient.lastName = model.lastName
reciepient.countryId = model.countryId
reciepient.stateId = model.stateId
reciepient.districtId = model.districtId
reciepient.address = model.address
reciepient.relationId = model.relationId
reciepient.reasonId = model.reasonId
reciepient.mobileNumber = model.mobileNumber
reciepient.email = model.email
self.interactor?.save(reciepient: reciepient)
}
}
// MARK: AddReciepient module interface
extension AddReciepientPresenter: AddReciepientModuleInterface {
func viewIsReady() {
self.view?.showLoading()
self.interactor?.viewIsReady()
}
func save(model: ReceipientViewModel) {
self.convert(model: model)
}
}
// MARK: AddReciepient interactor output interface
extension AddReciepientPresenter: AddReciepientInteractorOutput {
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()
}
}