avicenna/service/data-hub/workflows/tools/tour-calculations.ts

147 lines
2.2 KiB
TypeScript

const operationIds = [
'2426751',
'2434332',
'2437824',
'2441471',
'2442525',
'2444241',
'2448226',
'2450977',
'2450978',
'2452151',
'2454255',
'2455048',
'2456857',
'2459854',
'2464152',
'2427276',
'257516',
'253794',
'255167',
'2512213',
'2517294',
'2426410',
'2426948',
'2431358',
'2431912',
'2434469',
'2436242',
'2438333',
'2437519',
'2437520',
'2443169',
'2444553',
'2440273',
'2447842',
'2445509',
'2448178',
'2445513',
'2448657',
'2448656',
'2448658',
'2452629',
'2448659',
'2448660',
'2458555',
'2448936',
'2459573',
'2448937',
'2448938',
'2461070',
'2461023',
'2448939',
'2448941',
'2448942',
'2448943',
'2448944',
'2448945',
'2465278',
'2466056',
'2466569',
'2470605',
'2471479',
'252341',
'253677',
'256885',
'2510564',
'2510931',
'2513296',
'2516877',
'2519324',
'2522937',
'2525602',
'2512706',
'2460117',
'254894',
'255872',
'2467856',
'2444103',
'2470688',
'2428718',
'2432271',
'2469884',
'2440536',
'2462825',
'2468018',
'2440535',
'2462410',
'2447292',
'2464146',
'2455744',
'2443173',
];
const query = `
query GetTourCostBreakdown($operationId: String!) {
tourCostBreakdown(operationId: $operationId) {
tariffDescription
tariffValidityPeriod
servicePositions {
value
description
variant
}
}
}
`;
async function fetchCalculation(tourId: string) {
try {
const response = await fetch('http://localhost:3000/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
query,
variables: {
"operationId": tourId,
},
}),
});
if (!response.ok) {
console.error(
`failed to load calculation for ${tourId}: ${response.status}`
);
return
}
const json = await response.json()
return {
einsatznummer: tourId,
...json.data.tourCostBreakdown,
}
} catch (error) {}
}
const promises = operationIds.map(id => fetchCalculation(id));
const results = await Promise.all(promises);
await Deno.writeTextFile(
"./tour_export.json",
JSON.stringify(results, null, 2)
);
export {}