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.
 
 
 
 

73 lines
1.8 KiB

//
// TablePresenterInteractor.swift
// GME Remit
//
// Created by InKwon Devik Kim on 26/06/2019.
//Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class TablePresenterInteractor {
// MARK: Properties
weak var output: TablePresenterInteractorOutput?
private let service: TablePresenterServiceType
private let model: [TablePresenterProtocol]?
// MARK: Initialization
init(service: TablePresenterServiceType, model: [TablePresenterProtocol]?) {
self.service = service
self.model = model
}
}
// MARK: TablePresenter interactor input interface
extension TablePresenterInteractor: TablePresenterInteractorInput {
func fetchModel(type: TablePresenterType = .default) {
switch type {
case .default:
output?.setModel(with: model)
case .branches(let countryCode, let bankID):
service.fetchBranches(
countryCode: countryCode,
bankID: bankID,
branchName: "",
success: {self.output?.setModel(with: $0)},
failure: {self.output?.setError(with: $0)}
)
}
}
func filterModel(word: String, type: TablePresenterType = .default) {
switch type {
case .default:
if word == "" {
output?.setModel(with: model)
return
}
let filterdModel = model?
.filter({
$0.cellTitle?
.lowercased()
.contains(word.lowercased()) ?? false
})
output?.setModel(with: filterdModel)
case .branches(let countryCode, let bankID):
service.fetchBranches(
countryCode: countryCode,
bankID: bankID,
branchName: word,
success: {self.output?.setModel(with: $0)},
failure: {self.output?.setError(with: $0)}
)
}
}
}