blob: e641d7fe6c0c8eaa51771e9d7e7da949c1c6bab3 [file] [log] [blame]
package org.apache.fineract.data.datamanager.api;
import org.apache.fineract.FakeRemoteDataSource;
import org.apache.fineract.data.local.PreferencesHelper;
import org.apache.fineract.data.models.loan.LoanAccount;
import org.apache.fineract.data.models.loan.LoanAccountPage;
import org.apache.fineract.data.models.product.ProductPage;
import org.apache.fineract.data.remote.BaseApiManager;
import javax.inject.Inject;
import javax.inject.Singleton;
import io.reactivex.Completable;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.functions.Function;
/**
* @author Rajan Maurya
* On 07/07/17.
*/
@Singleton
public class DataManagerLoans extends FineractBaseDataManager {
private final BaseApiManager baseApiManager;
private final PreferencesHelper preferencesHelper;
@Inject
public DataManagerLoans(BaseApiManager baseApiManager, PreferencesHelper preferencesHelper,
DataManagerAuth dataManagerAuth) {
super(dataManagerAuth, preferencesHelper);
this.baseApiManager = baseApiManager;
this.preferencesHelper = preferencesHelper;
}
public Observable<LoanAccountPage> fetchCustomerLoanAccounts(
String customeridentifier, Integer pageIndex, Integer size) {
return authenticatedObservableApi(baseApiManager.getLoanApi()
.fetchCustomerLoanAccounts(customeridentifier, pageIndex, size))
.onErrorResumeNext(
new Function<Throwable, ObservableSource<LoanAccountPage>>() {
@Override
public ObservableSource<LoanAccountPage> apply(
Throwable throwable) throws Exception {
return Observable.just(FakeRemoteDataSource.getloanAccountPage());
}
});
}
public Observable<LoanAccount> fetchCustomerLoanDetails(
String productIdentifier, String caseIdentifier) {
return authenticatedObservableApi(baseApiManager.getLoanApi()
.fetchCustomerLoanDetails(productIdentifier, caseIdentifier))
.onErrorResumeNext(
new Function<Throwable, ObservableSource<LoanAccount>>() {
@Override
public ObservableSource<LoanAccount> apply(
Throwable throwable) throws Exception {
return Observable.just(FakeRemoteDataSource.getloanAccount());
}
});
}
public Observable<ProductPage> getProducts(Integer pageIndex, Integer size) {
return authenticatedObservableApi(baseApiManager.getLoanApi()
.getProducts(pageIndex, size, false))
.onErrorResumeNext(
new Function<Throwable, ObservableSource<? extends ProductPage>>() {
@Override
public ObservableSource<? extends ProductPage> apply(
Throwable throwable) throws Exception {
return Observable.just(FakeRemoteDataSource.getProductPage());
}
});
}
public Completable createLoan(String productIdentifier, LoanAccount loanAccount) {
return authenticatedCompletableApi(baseApiManager.getLoanApi()
.createLoan(productIdentifier, loanAccount));
}
}