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
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()
|
|
}
|
|
}
|