Files
pedwfrontend/pages/api/endpoint/getStatusCounts_api.js
T
Robert Bond 24cd7000f7 Merged PR 2350: added in count on case status dropdown
added in count on case status dropdown

Related work items: #23447
2026-05-28 09:02:30 +00:00

106 lines
3.5 KiB
JavaScript

// // pages/api/status-counts.js
// import { azureHeadersPaged, azureHeaders } from "../../../actions/core/headers";
// import { respondError } from "../middleware/apiResponse";
// import { relayGet } from "../middleware/relayForwarding";
// import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets";
// import statusValues from "../../../components/utils/caseStagesObj";
// export default async function ApiProxy(req, res) {
// try {
// const relayPolicy = RELAY_POLICY_BOUNDED_READ;
// const queryUrl =
// "incidents?$apply=groupby((statuscode),aggregate($count as caseCount))";
// const response = await relayGet({
// queryUrl,
// res,
// requestOptionsBuilder: (accessToken) => azureHeaders(accessToken),
// relayPolicy,
// transformData: (data) => {
// if (
// Object.prototype.hasOwnProperty.call(
// data,
// "@odata.nextLink"
// )
// ) {
// const dataStr = JSON.stringify(data["@odata.nextLink"]);
// data["@odata.nextLink"] = dataStr.split("/v9.2/")[1];
// }
// return data;
// },
// errorResponse: {
// status: 400,
// code: "BASIC_SEARCH_FETCH_FAILED",
// message: "Failed to fetch basic search results"
// }
// });
// const countsByStatusCode = response.data.value.reduce((acc, item) => {
// acc[item.statuscode] = item.caseCount;
// return acc;
// }, {});
// const result = statusValues.map((status) => ({
// ...status,
// count: countsByStatusCode[status.statuscode] || 0
// }));
// return res.status(200).json({
// count: result.length,
// value: result
// });
// } catch (error) {
// console.error(
// "Failed to get status counts",
// error.response?.data || error.message
// );
// return res.status(500).json({
// error: "Failed to get status counts"
// });
// }
// }
// pages/api/status-counts.js
import { azureHeaders } from "../../../actions/core/headers";
import { relayGet } from "../middleware/relayForwarding";
import { RELAY_POLICY_BOUNDED_READ } from "../middleware/relayPolicyPresets";
import { statusValues } from "../../../components/utils/caseStagesObj";
export default async function ApiProxy(req, res) {
const queryUrl =
"incidents?$apply=groupby((statuscode),aggregate($count as caseCount))";
return relayGet({
queryUrl,
res,
requestOptionsBuilder: (accessToken) => azureHeaders(accessToken),
relayPolicy: RELAY_POLICY_BOUNDED_READ,
transformData: (data) => {
const countsByStatusCode = (data.value || []).reduce(
(acc, item) => {
acc[item.statuscode] = item.caseCount || 0;
return acc;
},
{}
);
return statusValues.map((status) => ({
...status,
caseCount: countsByStatusCode[status.statuscode] || 0
}));
},
errorResponse: {
status: 400,
code: "STATUS_COUNTS_FETCH_FAILED",
message: "Failed to fetch status counts"
}
});
}