package com.fourtails.usuariolecturista.jobs;
import com.appspot.ocr_backend.backend.Backend;
import com.appspot.ocr_backend.backend.model.MessagesAssignMeterToUser;
import com.appspot.ocr_backend.backend.model.MessagesAssignMeterToUserResponse;
import com.fourtails.usuariolecturista.MeterRegistrationActivity;
import com.fourtails.usuariolecturista.ottoEvents.AssignMeterToUserBackendEvent;
import com.fourtails.usuariolecturista.ottoEvents.AssignMeterToUserBackendEvent.Type;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import com.orhanobut.logger.Logger;
import com.path.android.jobqueue.Job;
import com.path.android.jobqueue.Params;
/**
* AssignMeterToUserBackendJob async job
*/
public class AssignMeterToUserBackendJob extends Job {
boolean responseOk = false;
boolean retry = true;
String mAccountNumber;
String mEmailAsUserIdFromActivity;
public AssignMeterToUserBackendJob(String mAccountNumber, String mEmailAsUserIdFromActivity) {
super(new Params(Priority.MID).requireNetwork().groupBy("assign-meter-to-user"));
this.mAccountNumber = mAccountNumber;
this.mEmailAsUserIdFromActivity = mEmailAsUserIdFromActivity;
}
@Override
public void onAdded() {
Logger.d("AssignMeterToUserBackendJob initiated");
}
@Override
public void onRun() throws Throwable {
// Use a builder to help formulate the API request.
Backend.Builder builder = new Backend.Builder(
AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(),
null);
Backend service = builder.build();
MessagesAssignMeterToUser messagesAssignMeterToUser = new MessagesAssignMeterToUser();
messagesAssignMeterToUser.setAccountNumber(mAccountNumber);
messagesAssignMeterToUser.setEmail(mEmailAsUserIdFromActivity);
MessagesAssignMeterToUserResponse response = service.meter().assignToUser(messagesAssignMeterToUser).execute();
if (response.getOk()) {
Logger.json(response.toPrettyString());
MeterRegistrationActivity.bus.post(new AssignMeterToUserBackendEvent(Type.COMPLETED, 1));
} else {
Logger.e(response.getError());
}
}
@Override
protected void onCancel() {
Logger.d("AssignMeterToUserBackendJob canceled");
MeterRegistrationActivity.bus.post(new AssignMeterToUserBackendEvent(Type.COMPLETED, 99));
responseOk = false;
}
@Override
protected boolean shouldReRunOnThrowable(Throwable throwable) {
return retry;
}
}