---
import { generate } from "@pdfme/generator";
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
import { convertAusweisData } from "#lib/AusweisData";
import { variable } from "#lib/pdf/plugins/variables";
import { text, image } from "@pdfme/schemas"
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "#lib/caller";

const base64 = Astro.url.searchParams.get("base64");
let ausweis: VerbrauchsausweisWohnenClient | null = null;
if (base64) {
	const buffer = Buffer.from(base64, "base64");
	const json = buffer.toString("utf-8");
	ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
} else {
	const uidAusweis = Astro.url.searchParams.get("uid");

	if (!uidAusweis) {
		return Astro.redirect("/404");
	}

	const caller = createCaller(Astro);

	ausweis = await caller.v1.verbrauchsausweisWohnen.get({
		uid: uidAusweis
	})
}

if (!ausweis) {
	return Astro.redirect("/404");
}

const pdf = await generate({
	template: VerbrauchsausweisWohnen2016Template,
	plugins: { text, image, variable },
	inputs: [convertAusweisData(ausweis)],
	options: {
		author: "IB Cornelsen",
		creationDate: new Date(),
		creator: "IB Cornelsen",
		language: "de",
		title: "Verbrauchsausweis Wohnen 2016",
	},
});

return new Response(pdf, {
	headers: {
		"Content-Type": "application/pdf",
	},
});
---
