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