TASK22211: normalize case creation and media endpoint contracts
This commit is contained in:
@@ -42,65 +42,109 @@
|
||||
*/
|
||||
|
||||
import axios from "axios";
|
||||
import CryptoJS from "crypto-js";
|
||||
import _ from "lodash";
|
||||
import { consoleLogger } from "../../../actions/core/logger";
|
||||
import { getToken } from "../../../actions/core/token";
|
||||
import { getCaseBlob } from "../../../actions/azurestorage";
|
||||
import { hashAPIPath } from "../../../actions/core/hash";
|
||||
import { respondError, respondSuccess } from "../middleware/apiResponse";
|
||||
|
||||
const WEBAPI_URL =
|
||||
process.env.RELAY_ROOT ||
|
||||
"https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/";
|
||||
|
||||
export default async function ApiProxy(req, res) {
|
||||
var createCaseBody = req.body;
|
||||
var contactid = req.query.contactid;
|
||||
var appealTypeId = req.query.appealTypeId;
|
||||
var containerName = req.query.containername;
|
||||
var lpaID = req.query.lpaID;
|
||||
var queryUrl = "incidents";
|
||||
var token = await getToken();
|
||||
const createCaseBody = req.body;
|
||||
const contactid = req.query.contactid;
|
||||
const appealTypeId = req.query.appealTypeId;
|
||||
const containerName = req.query.containername;
|
||||
const lpaID = req.query.lpaID;
|
||||
const queryUrl = "incidents";
|
||||
|
||||
var data = {
|
||||
"title": "insertion test case",
|
||||
"caseorigincode": 3,
|
||||
"servicestage": 1,
|
||||
"customerid_contact@odata.bind": "/contacts(" + contactid + ")",
|
||||
"pinswg_appealcasetype": appealTypeId,
|
||||
"pinswg_AssociatedLPA@odata.bind": "/accounts(" + lpaID + ")"
|
||||
};
|
||||
var newData = Object.assign(data, createCaseBody);
|
||||
if (!createCaseBody || typeof createCaseBody !== "object") {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "CASE_PAYLOAD_REQUIRED",
|
||||
message: "Case payload is required"
|
||||
});
|
||||
}
|
||||
if (typeof contactid !== "string" || contactid.trim().length === 0) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "CONTACT_ID_REQUIRED",
|
||||
message: "contactid is required"
|
||||
});
|
||||
}
|
||||
if (typeof appealTypeId !== "string" || appealTypeId.trim().length === 0) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "APPEAL_TYPE_ID_REQUIRED",
|
||||
message: "appealTypeId is required"
|
||||
});
|
||||
}
|
||||
if (
|
||||
typeof containerName !== "string" ||
|
||||
containerName.trim().length === 0
|
||||
) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "CONTAINER_NAME_REQUIRED",
|
||||
message: "containername is required"
|
||||
});
|
||||
}
|
||||
if (typeof lpaID !== "string" || lpaID.trim().length === 0) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "LPA_ID_REQUIRED",
|
||||
message: "lpaID is required"
|
||||
});
|
||||
}
|
||||
|
||||
delete newData.lpaTypes;
|
||||
delete newData.appealTypes;
|
||||
try {
|
||||
const token = await getToken();
|
||||
|
||||
console.log("/////Create Case:\n", newData, "\n//////////////");
|
||||
const data = {
|
||||
"title": "insertion test case",
|
||||
"caseorigincode": 3,
|
||||
"servicestage": 1,
|
||||
"customerid_contact@odata.bind": "/contacts(" + contactid + ")",
|
||||
"pinswg_appealcasetype": appealTypeId,
|
||||
"pinswg_AssociatedLPA@odata.bind": "/accounts(" + lpaID + ")"
|
||||
};
|
||||
const newData = Object.assign(data, createCaseBody);
|
||||
|
||||
var config = {
|
||||
method: "post",
|
||||
url: WEBAPI_URL + queryUrl + hashAPIPath(queryUrl),
|
||||
headers: {
|
||||
"OData-MaxVersion": "4.0",
|
||||
"OData-Version": "4.0",
|
||||
"Accept": "application/json",
|
||||
"Prefer": 'odata.include-annotations="*",return=representation',
|
||||
"Authorization": "Bearer " + token.access_token,
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
data: JSON.stringify(newData)
|
||||
};
|
||||
var apiResponse = _.isEmpty(req.query)
|
||||
? res.status(400).json()
|
||||
: axios(config)
|
||||
.then(({ data }) => {
|
||||
getCaseBlob(containerName, data.ticketnumber, createCaseBody);
|
||||
delete newData.lpaTypes;
|
||||
delete newData.appealTypes;
|
||||
|
||||
res.status(200).json(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
//consoleLogger(error);
|
||||
res.status(400).json(error);
|
||||
});
|
||||
console.log("/////Create Case:\n", newData, "\n//////////////");
|
||||
|
||||
return apiResponse;
|
||||
const config = {
|
||||
method: "post",
|
||||
url: WEBAPI_URL + queryUrl + hashAPIPath(queryUrl),
|
||||
headers: {
|
||||
"OData-MaxVersion": "4.0",
|
||||
"OData-Version": "4.0",
|
||||
"Accept": "application/json",
|
||||
"Prefer": 'odata.include-annotations="*",return=representation',
|
||||
"Authorization": "Bearer " + token.access_token,
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
data: JSON.stringify(newData)
|
||||
};
|
||||
|
||||
const { data: responseData } = await axios(config);
|
||||
await getCaseBlob(
|
||||
containerName,
|
||||
responseData.ticketnumber,
|
||||
createCaseBody
|
||||
);
|
||||
|
||||
return respondSuccess(res, responseData);
|
||||
} catch (error) {
|
||||
consoleLogger(error);
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "CASE_CREATE_FAILED",
|
||||
message: "Failed to create case"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user