Skip to content

Instantly share code, notes, and snippets.

@vishalhalani
Created May 16, 2018 05:44
Show Gist options
  • Save vishalhalani/f4090c3ddcedc2348b248929305bf4d4 to your computer and use it in GitHub Desktop.
Save vishalhalani/f4090c3ddcedc2348b248929305bf4d4 to your computer and use it in GitHub Desktop.
Controller to make webcall and handle response
public class TaskController {
ApiInterface apiService = null;
OnWebAPIResponseListener mRepsonseListener;
Context context;
public TaskController(OnWebAPIResponseListener mRepsonseListener, Context context) {
this.context = context;
this.mRepsonseListener = mRepsonseListener;
}
public void getAllTask(final int request_code, final String empID, String startDate, String endDate) {
SharedPreferences sharedpreferences = context.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
final String token = sharedpreferences.getString(ACCESSTOKEN, "");
apiService = RetrofitClient.createServiceWithAuth(ApiInterface.class, token);
String query = Const.ID + "," + Const.pa_startDate + "," + Const.pa_dueDate + "," + Const.pa_taskName + "," + Const.pa_taskStatus + "," + Const.pa_Assigned + "/ID" + "," + Const.pa_Assigned + "/Title" + "," + Const.pa_employee + "/ID" + "," + Const.pa_employee + "/Title";
Call<TaskList> call = apiService.getAllTask(PLANACTUAL, query, Const.getTaskQuery(empID, startDate, endDate));
call.enqueue(new Callback<TaskList>() {
@Override
public void onResponse(Call<TaskList> call, Response<TaskList> response) {
if (response.isSuccessful()) {
// Log.w("response => ", new GsonBuilder().setPrettyPrinting().create().toJson(response));
if (response.body().getTaskModelList() != null) {
Timber.d("onCallComplete: json Task=->%s", response.body().getTaskModelList().size());
mRepsonseListener.onCallComplete(response.body(), request_code);
}
} else {
APIError apiError = ErrorUtil.parseError(response);
mRepsonseListener.onCallError(apiError, request_code);
}
}
@Override
public void onFailure(Call<TaskList> call, Throwable t) {
// Log error here since request failed
Timber.e("%s", t.toString());
mRepsonseListener.onCallFailure(t.getMessage(), request_code);
}
});
}
public void updatePlanActual(final int request_code, UpdateTaskModel model, String recordId) {
SharedPreferences sharedpreferences = context.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
final String token = sharedpreferences.getString(ACCESSTOKEN, "");
apiService = RetrofitClient.createServiceWithAuth(ApiInterface.class, token);
Call<ResponseBody> call = apiService.updateTask(PLANACTUAL, Integer.parseInt(recordId), model);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
if (response.code() == 204 || response.code() == 205) {
Timber.i("onCallComplete: update report successfully");
mRepsonseListener.onCallComplete(UPDATED, request_code);
}
} else {
APIError apiError = ErrorUtil.parseError(response);
// if(apiError.getErrorCode() == 401)
// {
// getRefreshAccessToken(request_code);
// }
mRepsonseListener.onCallError(apiError, request_code);
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// Log error here since request failed
Timber.e("%s", t.toString());
mRepsonseListener.onCallFailure(t.getMessage(), request_code);
}
});
}
public void addTask(final int request_code, AddTaskModel model) {
SharedPreferences sharedpreferences = context.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
final String token = sharedpreferences.getString(ACCESSTOKEN, "");
apiService = RetrofitClient.createServiceWithAuth(ApiInterface.class, token);
Call<TaskModel> call = apiService.addTask(PLANACTUAL, model);
// if (isAdmin) {
// call = apiService.addTask(PLANACTUAL,Integer.parseInt(taskmap.get(Const.pa_employee+"Id")),Integer.parseInt(taskmap.get(Const.pa_Assigned+"Id")), taskmap);
//
// } else {
// call = apiService.addTask(PLANACTUAL,Integer.parseInt(taskmap.get(Const.pa_employee+"Id")), taskmap);
// }
call.enqueue(new Callback<TaskModel>() {
@Override
public void onResponse(Call<TaskModel> call, Response<TaskModel> response) {
if (response.isSuccessful()) {
Timber.i("onCallComplete: added report ID=->%s", response.body().getID());
mRepsonseListener.onCallComplete(response.body(), request_code);
} else {
APIError apiError = ErrorUtil.parseError(response);
// if(apiError.getErrorCode() == 401)
// {
// getRefreshAccessToken(request_code);
// }
mRepsonseListener.onCallError(apiError, request_code);
}
}
@Override
public void onFailure(Call<TaskModel> call, Throwable t) {
// Log error here since request failed
Timber.e("%s", t.toString());
mRepsonseListener.onCallFailure(t.getMessage(), request_code);
}
});
}
public void getActualTask(final int request_code, final String empID, String startDate, String endDate) {
SharedPreferences sharedpreferences = context.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
final String token = sharedpreferences.getString(ACCESSTOKEN, "");
apiService = RetrofitClient.createServiceWithAuth(ApiInterface.class, token);
String query = Const.ID + "," + Const.pa_startDate + "," + Const.pa_dueDate + "," + Const.pa_taskName + "," + Const.pa_taskStatus + "," + Const.pa_Assigned + "/ID" + "," + Const.pa_Assigned + "/Title" + "," + Const.pa_employee + "/ID" + "," + Const.pa_employee + "/Title";
Call<TaskList> call = apiService.getAllTask(PLANACTUAL, query, Const.getActualTaskQuery(empID, startDate, endDate));
call.enqueue(new Callback<TaskList>() {
@Override
public void onResponse(Call<TaskList> call, Response<TaskList> response) {
if (response.isSuccessful()) {
// Log.w("response => ", new GsonBuilder().setPrettyPrinting().create().toJson(response));
if (response.body().getTaskModelList() != null) {
Timber.i("onCallComplete: json Task=->%s", response.body().getTaskModelList().size());
mRepsonseListener.onCallComplete(response.body(), request_code);
}
} else {
APIError apiError = ErrorUtil.parseError(response);
mRepsonseListener.onCallError(apiError, request_code);
}
}
@Override
public void onFailure(Call<TaskList> call, Throwable t) {
// Log error here since request failed
Timber.e("%s", t.toString());
mRepsonseListener.onCallFailure(t.getMessage(), request_code);
}
});
}
public void getRefreshAccessToken(final int request_code) {
apiService = RetrofitClient.createService(ApiInterface.class);
Map<String, String> credMap = Const.getCredentialMap();
Call<AccessTokenModel> call = apiService.getAccessToken(credMap);
call.enqueue(new Callback<AccessTokenModel>() {
@Override
public void onResponse(Call<AccessTokenModel> call, Response<AccessTokenModel> response) {
if (response.isSuccessful()) {
SharedPreferences pref = context.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
if (response.body() != null) {
AccessTokenModel model = ((AccessTokenModel) response.body());
editor.putString(ACCESSTOKEN, model.getAccessToken()).apply();
}
mRepsonseListener.OnTokenRefresh(true, request_code);
} else {
Timber.e("onResponse Refresh token: error body=>%s", response.errorBody());
APIError apiError = ErrorUtil.parseError(response);
mRepsonseListener.onCallError(apiError, request_code);
}
}
@Override
public void onFailure(Call<AccessTokenModel> call, Throwable t) {
// Log error here since request failed
Timber.e("%s", t.toString());
mRepsonseListener.onCallFailure(t.getMessage(), request_code);
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment