blob: beecc0f52d2c2c03b5e364f46af0444c663e1b5c [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.deposit.DepositAccount;
import org.apache.fineract.data.models.deposit.ProductDefinition;
import org.apache.fineract.data.remote.BaseApiManager;
import java.util.List;
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 DataManagerDeposit extends FineractBaseDataManager {
private final BaseApiManager baseApiManager;
private final PreferencesHelper preferencesHelper;
@Inject
public DataManagerDeposit(BaseApiManager baseApiManager, PreferencesHelper preferencesHelper,
DataManagerAuth dataManagerAuth) {
super(dataManagerAuth, preferencesHelper);
this.baseApiManager = baseApiManager;
this.preferencesHelper = preferencesHelper;
}
public Observable<List<DepositAccount>> getCustomerDepositAccounts(
String customerIdentifier) {
return authenticatedObservableApi(baseApiManager.getDepositApi()
.fetchCustomersDeposits(customerIdentifier))
.onErrorResumeNext(
new Function<Throwable, ObservableSource<List<DepositAccount>>>() {
@Override
public ObservableSource<List<DepositAccount>> apply(
Throwable throwable)
throws Exception {
return Observable.just(FakeRemoteDataSource
.getCustomerDepositAccounts());
}
});
}
public Observable<DepositAccount> getCustomerDepositAccountDetails(
String accountIdentifier) {
return authenticatedObservableApi(baseApiManager.getDepositApi()
.fetchCustomerDepositDetails(accountIdentifier))
.onErrorResumeNext(
new Function<Throwable, ObservableSource<DepositAccount>>() {
@Override
public ObservableSource<DepositAccount> apply(
Throwable throwable) throws Exception {
return Observable.just(FakeRemoteDataSource
.getCustomerDepositAccounts().get(0));
}
});
}
public Observable<List<ProductDefinition>> fetchProductDefinitions() {
return authenticatedObservableApi(baseApiManager.getDepositApi().fetchProductDefinitions());
}
public Completable createDepositAccount(DepositAccount depositAccount) {
return authenticatedCompletableApi(baseApiManager.getDepositApi()
.createDepositAccount(depositAccount));
}
public Completable updateDepositAccount(String accountIdentifier,
DepositAccount depositAccount) {
return authenticatedCompletableApi(baseApiManager.getDepositApi()
.updateDepositAccount(accountIdentifier, depositAccount));
}
}