package org.openlmis.core.training;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.google.inject.Inject;
import org.openlmis.core.LMISApp;
import org.openlmis.core.manager.SharedPreferenceMgr;
import org.openlmis.core.service.SyncUpManager;
import org.openlmis.core.utils.Constants;
import rx.Single;
import rx.SingleSubscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
public class TrainingSyncAdapter {
@Inject
SyncUpManager syncUpManager;
@Inject
SharedPreferenceMgr sharedPreferenceMgr;
Context context;
protected String onPerformSync() {
context = LMISApp.getContext();
triggerFakeSync();
return "immediate sync up requested";
}
private void triggerFakeSync() {
sendSyncStartBroadcast();
boolean isFakeSyncRnrSuccessful = syncUpManager.fakeSyncRnr();
if (isFakeSyncRnrSuccessful) {
sharedPreferenceMgr.setRnrLastSyncTime();
}
boolean isFakeSyncStockSuccessful = syncUpManager.fakeSyncStockCards();
if (isFakeSyncStockSuccessful) {
sharedPreferenceMgr.setStockLastSyncTime();
}
syncUpManager.fakeSyncUpUnSyncedStockCardCodes();
if (!sharedPreferenceMgr.hasSyncedVersion()) {
sharedPreferenceMgr.setSyncedVersion(true);
}
syncUpManager.fakeSyncUpCmms();
syncUpManager.fakeSyncRapidTestForms();
sendSyncFinishedBroadcast();
}
private void sendSyncStartBroadcast() {
Intent intent = new Intent();
intent.setAction(Constants.INTENT_FILTER_START_SYNC_DATA);
context.sendBroadcast(intent);
}
private void sendSyncFinishedBroadcast() {
Intent intent = new Intent();
intent.setAction(Constants.INTENT_FILTER_FINISH_SYNC_DATA);
context.sendBroadcast(intent);
}
public void requestSync() {
Single.create(new Single.OnSubscribe<String>() {
@Override
public void call(SingleSubscriber<? super String> singleSubscriber) {
singleSubscriber.onSuccess(onPerformSync());
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
@Override
public void call(String message) {
Log.d("training sync", message);
}
});
}
}