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,pinswg_appealcasetype),aggregate($count as caseCount))&$filter=pinswg_publishtoweb eq true"; return relayGet({ queryUrl, res, requestOptionsBuilder: (accessToken) => azureHeaders(accessToken), relayPolicy: RELAY_POLICY_BOUNDED_READ, transformData: (data) => { const countsByStatusCode = (data.value || []).reduce( (acc, item) => { const statuscode = item.statuscode; if (!acc[statuscode]) { acc[statuscode] = { caseCount: 0, appealTypes: [] }; } acc[statuscode].caseCount += item.caseCount || 0; acc[statuscode].appealTypes.push({ value: item[ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ] || "", appealType: item.pinswg_appealcasetype, caseCount: item.caseCount || 0 }); return acc; }, {} ); return statusValues.map((status) => ({ ...status, caseCount: countsByStatusCode[status.statuscode] || 0, appealTypes: countsByStatusCode[status.statuscode]?.appealTypes || [] })); }, errorResponse: { status: 400, code: "STATUS_COUNTS_FETCH_FAILED", message: "Failed to fetch status counts" } }); }