42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
|
import { z } from "zod";
|
|
import { verbrauchsausweisWohnenPDFValidator } from "./validators/verbrauchsausweis-wohnen-pdf-validator";
|
|
|
|
export function convertAusweisData(
|
|
inputs: Partial<VerbrauchsausweisWohnenClient>
|
|
): Record<string, string> {
|
|
// Wir wollen alle Werte zu einem Flachen Objekt umwandeln, sodass wir dass später benutzen können.
|
|
// Dazu kommen noch einige wichtige Eigenschaften die man im PDF brauchen könnte.
|
|
let pdfInputs: z.infer<typeof verbrauchsausweisWohnenPDFValidator> = {
|
|
...inputs,
|
|
pdf: {
|
|
"brennstoff": [inputs.gebaeude_aufnahme_allgemein?.brennstoff_1, inputs.gebaeude_aufnahme_allgemein?.brennstoff_2].filter(x => x).join(", ")
|
|
}
|
|
}
|
|
let result = recursiveFlatten(inputs, "");
|
|
// Außerdem müssen wir alle Werte zu strings umwandeln.
|
|
for (const key in result) {
|
|
result[key] = String(result[key]);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
function recursiveFlatten(obj: any, parentKey = ""): Record<string, string> {
|
|
const result: Record<string, string> = {};
|
|
|
|
for (const key in obj) {
|
|
const value = obj[key];
|
|
|
|
const newKey = parentKey ? `${parentKey}.${key}` : key;
|
|
|
|
if (typeof value === "object") {
|
|
Object.assign(result, recursiveFlatten(value, newKey));
|
|
} else {
|
|
result[newKey] = value;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
} |