blob: dde25b327b3c8cd4483bda00f69b30af195f8523 [file] [log] [blame]
package org.apache.fineract.ui.online.accounting.ledgers
import android.content.Context
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.functions.Predicate
import io.reactivex.observers.DisposableObserver
import io.reactivex.schedulers.Schedulers
import org.apache.fineract.R
import org.apache.fineract.data.datamanager.DataManagerAccounting
import org.apache.fineract.data.models.accounts.Ledger
import org.apache.fineract.data.models.accounts.LedgerPage
import org.apache.fineract.injection.ApplicationContext
import org.apache.fineract.ui.base.BasePresenter
import org.apache.fineract.ui.online.accounting.accounts.LedgerContract
import javax.inject.Inject
class LedgerPresenter @Inject constructor(@ApplicationContext context: Context,
val dataManagerAccounting: DataManagerAccounting)
: BasePresenter<LedgerContract.View>(context), LedgerContract.Presenter {
private val compositeDisposable = CompositeDisposable()
override fun getLedgersPage() {
checkViewAttached()
mvpView.showProgressbar()
compositeDisposable.add(dataManagerAccounting.fetchLedgers()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : DisposableObserver<LedgerPage>() {
override fun onComplete() {
}
override fun onNext(ledgerPage: LedgerPage) {
mvpView.hideProgressbar()
if (ledgerPage.ledgers != null) {
if (ledgerPage.ledgers.isEmpty()) {
mvpView.showEmptyLedgers()
} else {
mvpView.showLedgers(ledgerPage.ledgers)
}
}
}
override fun onError(throwable: Throwable) {
mvpView.hideProgressbar()
showExceptionError(throwable,
context.getString(R.string.error_fetching_ledger))
}
})
)
}
override fun searchLedger(ledgerList: List<Ledger>, identifier: String) {
checkViewAttached()
mvpView.searchedLedger(Observable.fromIterable(ledgerList)
.filter(object: Predicate<Ledger> {
override fun test(ledger: Ledger): Boolean {
return ledger.identifier?.toLowerCase()
?.contains(identifier.toLowerCase()).toString().toBoolean()
}
}).toList().blockingGet())
}
}