Commit feac4b31 by Kunj Gupta

Changed the POST API for HRCase Variable form submission.

parent c3018954
......@@ -2,6 +2,7 @@ package com.vsoft.servicenow.api.interfaces;
import com.vsoft.servicenow.db.models.CatalogueItem;
import com.vsoft.servicenow.db.models.CatalogueVariable;
import com.vsoft.servicenow.db.models.HRCaseVariable;
import com.vsoft.servicenow.utils.Constants;
import java.util.Map;
......@@ -13,6 +14,7 @@ import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
......@@ -26,7 +28,7 @@ import retrofit2.http.Url;
public interface HRCaseVariableApi {
// Get HRCase Variable API
@GET(Constants.URL_GET_HR_CASE_VARIABLE)
Call<ResponseBody> getVariable(@Query(CatalogueVariable.Json.SYS_ID) String sysId);
Call<ResponseBody> getVariable(@Query(HRCaseVariable.Json.SYS_ID) String sysId);
// Get HRCase Variable Choices API
@GET(Constants.URL_GET_HR_CASE_VARIABLE_CHOICE)
......@@ -34,7 +36,7 @@ public interface HRCaseVariableApi {
// Post HRCase item API
@POST(Constants.URL_POST_HR_CASE_ITEM)
Call<ResponseBody> postHRCaseItem(@Query(CatalogueItem.Json.SYS_ID) String sysId,
Call<ResponseBody> postHRCaseItem(@Path(HRCaseVariable.Json.SYS_ID) String user,
@Body String catalogueItemJson);
// Get HRCase Reference API
......@@ -51,7 +53,7 @@ public interface HRCaseVariableApi {
// Get HRCase Variable API
@GET(Constants.URL_GET_HR_CASE_UI_POLICY)
Call<ResponseBody> getUiPolicy(@Query(CatalogueVariable.Json.SYS_ID) String sysId);
Call<ResponseBody> getUiPolicy(@Query(HRCaseVariable.Json.SYS_ID) String sysId);
}
package com.vsoft.servicenow.api.listeners.post;
import com.vsoft.servicenow.api.pojos.HRCaseVariableSubmitApiResponse;
/**
* @since 1.0
* @author Created by Kunj on 13/04/2018.
*
*/
public interface PostHRCaseVariableFormApiListener {
void onDoneApiCall(String hrCaseVariableFromSysId);
void onDoneApiCall(HRCaseVariableSubmitApiResponse hrCaseVariableSubmitApiResponse);
void onFailApiCall();
}
......@@ -14,6 +14,7 @@ import com.vsoft.servicenow.api.interfaces.HRCaseVariableApi;
import com.vsoft.servicenow.api.listeners.get.GetHRCaseVariableApiListener;
import com.vsoft.servicenow.api.listeners.post.PostHRCaseAttachmentApiListener;
import com.vsoft.servicenow.api.listeners.post.PostHRCaseVariableFormApiListener;
import com.vsoft.servicenow.api.pojos.HRCaseVariableSubmitApiResponse;
import com.vsoft.servicenow.db.models.CatalogueVariable;
import com.vsoft.servicenow.db.models.HRCaseVariable;
import com.vsoft.servicenow.db.models.HRCaseVariableChoice;
......@@ -226,8 +227,48 @@ public class HRCaseVariableApiManager {
JSONObject jsonObject = new JSONObject(response.body().string());
JSONObject error = jsonObject.optJSONObject(Constants.RESPONSE_ERROR_OBJECT_NAME);
if (error == null) {
String resultSysId = jsonObject.getString(Constants.RESPONSE_RESULT_OBJECT_NAME);
listener.onDoneApiCall(resultSysId);
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeAdapter(long.class, new JsonDeserializer<Long>() {
@Override
public Long deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
long value = 0;
try {
value = json.getAsLong();
} catch (NumberFormatException e) {
CatalogueLog.d("HRCaseVariableApiManager: submitHRCaseVariableForm: deserialize: long.class: NumberFormatException: ");
}
return value;
}
})
.registerTypeAdapter(int.class, new JsonDeserializer<Integer>() {
@Override
public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
int value = 0;
try {
value = json.getAsInt();
} catch (NumberFormatException e) {
CatalogueLog.d("HRCaseVariableApiManager: submitHRCaseVariableForm: deserialize: int.class: NumberFormatException: ");
}
return value;
}
})
.registerTypeAdapter(float.class, new JsonDeserializer<Float>() {
@Override
public Float deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
float value = 0;
try {
value = json.getAsFloat();
} catch (NumberFormatException e) {
CatalogueLog.e("HRCaseVariableApiManager: submitHRCaseVariableForm: deserialize: float.class: NumberFormatException: ", e);
}
return value;
}
})
.create();
JSONObject resultJsonObject = jsonObject.getJSONObject(Constants.RESPONSE_RESULT_OBJECT_NAME);
HRCaseVariableSubmitApiResponse hrCaseVariableResponse = gson.fromJson(resultJsonObject.toString(), HRCaseVariableSubmitApiResponse.class);
listener.onDoneApiCall(hrCaseVariableResponse);
}
} catch (JSONException e) {
e.printStackTrace();
......
package com.vsoft.servicenow.api.pojos;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
/**
* Created by chaukadev on 4/16/18.
*/
public class HRCaseVariableSubmitApiResponse {
@SerializedName("record")
@Expose
private String record;
@SerializedName("redirect_url")
@Expose
private String redirectUrl;
public String getRecord() {
return record;
}
public void setRecord(String record) {
this.record = record;
}
public String getRedirectUrl() {
return redirectUrl;
}
public void setRedirectUrl(String redirectUrl) {
this.redirectUrl = redirectUrl;
}
}
......@@ -412,7 +412,11 @@ public class HRCaseVariable {
}
public static class Json {
public static final String SYS_ID = "sys_id";
public static final String TYPE = "type";
/*Variable form attachment*/
public static final String TABLE_NAME_VALUE = "sc_req_item";
}
@Override
......
......@@ -13,6 +13,7 @@ import com.vsoft.servicenow.api.managers.CatalogueVariableApiManager;
import com.vsoft.servicenow.api.managers.HRCaseItemApiManager;
import com.vsoft.servicenow.api.managers.HRCaseVariableApiManager;
import com.vsoft.servicenow.api.managers.IncidentApiManager;
import com.vsoft.servicenow.api.pojos.HRCaseVariableSubmitApiResponse;
import com.vsoft.servicenow.db.managers.AttachmentManager;
import com.vsoft.servicenow.db.managers.CatalogueItemInputManager;
import com.vsoft.servicenow.db.managers.CatalogueItemManager;
......@@ -243,10 +244,20 @@ public class SyncService extends IntentService {
hrCaseItemInput.getData(),
new PostHRCaseVariableFormApiListener() {
@Override
public void onDoneApiCall(String variableFromSysId) {
public void onDoneApiCall(HRCaseVariableSubmitApiResponse hrCaseVariableSubmitApiResponse) {
syncStatus = SyncStatus.SUCCESS;
CatalogueLog.e("syncHRCaseVariableForm: saveHRCaseVariableForm: result is SUCCESS");
hrCaseItemInput.setSysId(variableFromSysId);
//We are getting response without direct sys_id of submitted form.
//Getting "record" variable, it is containing sys_id with url form.
//We need to split the url and get the sys_id, URL like - api/now/table/hr_case/dc5116784f6d93400edad5401210c764
String record = hrCaseVariableSubmitApiResponse.getRecord();
String[] recordSpit = record.split("/");
String submittedFormSysId = null;
if(recordSpit.length > 0) {
submittedFormSysId = recordSpit[recordSpit.length - 1];
}
hrCaseItemInput.setSysId(submittedFormSysId);
HRCaseItemInputManager.handleSaveServerResponse(hrCaseItemInput, Collections.singletonList(CATALOGUE_ITEM_INPUT_SYS_ID), SYNC_FLAG_NONE);
}
......
......@@ -591,7 +591,7 @@ public class HRCaseVariableScreen extends HandleNotificationActivity {
}
private void saveFormData() {
JSONArray jsonArray;
JSONObject parentJsonObject;
JSONObject jsonObject = null;
boolean hasErrors = false;
boolean skipInvisibleItem = false;
......@@ -670,12 +670,16 @@ public class HRCaseVariableScreen extends HandleNotificationActivity {
if(hasErrors)
return;
jsonArray = new JSONArray();
jsonArray.put(jsonObject);
parentJsonObject = new JSONObject();
try {
parentJsonObject.put("variables", jsonObject);
} catch (JSONException e) {
e.printStackTrace();
}
/*Save data in local DB*/
HRCaseItemInput.HRCaseItemInputBuilder builder = HRCaseItemInput.HRCaseItemInputBuilder.aHRCaseItemInput();
builder.setData(jsonArray.toString());
builder.setData(parentJsonObject.toString());
builder.setHRCaseItemId(mHRCaseItem.getId());
long id = HRCaseItemInputManager.save(builder.build(), DBConstants.SYNC_FLAG_CREATE);
......
......@@ -185,7 +185,7 @@ public class Constants {
public static final String URL_GET_HR_CASE_VARIABLE = AppConfig.URL_GET_HR_CASE_VARIABLE;
public static final String URL_GET_HR_CASE_UI_POLICY = AppConfig.URL_GET_HR_CASE_UI_POLICY;
public static final String URL_GET_HR_CASE_VARIABLE_CHOICE = DOMAIN + AppConfig.URL_GET_HR_CASE_VARIABLE_CHOICE;
public static final String URL_POST_HR_CASE_ITEM = AppConfig.URL_POST_HR_CASE_CATALOGUE_ITEM;
public static final String URL_POST_HR_CASE_ITEM = AppConfig.URL_POST_HR_CASE_ITEM;
public static final String URL_GET_HR_CASE_REFERENCE = API_PATH;
public static final String URL_POST_HR_CASE_ATTACHMENT = DOMAIN + "api/now/v1/attachment/file";
......
......@@ -50,7 +50,7 @@ public class AppConfig {
public static final String URL_GET_HR_CASE_VARIABLE = "api/vsng2/uofl_mobile/catalogue_variable_screen";
public static final String URL_GET_HR_CASE_UI_POLICY = "/api/vsng2/uofl_mobile/uipolicy";
public static final String URL_GET_HR_CASE_VARIABLE_CHOICE = "/api/vsng2/uofl_mobile/question_choice";
public static final String URL_POST_HR_CASE_CATALOGUE_ITEM = "api/vsng2/uofl_mobile/createCase";
public static final String URL_POST_HR_CASE_ITEM = "/api/sn_sc/servicecatalog/items/{sys_id}/submit_producer";
/**
* Socket Chat server URLs - Urls given by Ravi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment