// // 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" } }); }