|
|
|
|
@@ -2,11 +2,11 @@ import { BenutzerClient, getAusweisartFromId, VerbrauchsausweisGewerbeClient, Ve
|
|
|
|
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
|
|
|
|
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
|
|
|
|
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
|
|
|
|
import { Aufnahme, Benutzer, Bild, Enums, Objekt, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
|
|
|
|
import { Aufnahme, Benutzer, Bild, Enums, Objekt, Rechnung, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
|
|
|
|
import { APIRoute } from "astro";
|
|
|
|
|
import { createCaller } from "src/astro-typesafe-api-caller.js";
|
|
|
|
|
import { getS3File } from "#lib/s3.js";
|
|
|
|
|
import { getAufnahme, getBilder, getObjekt, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db.js";
|
|
|
|
|
import { getAufnahme, getBilder, getObjekt, getRechnung, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db.js";
|
|
|
|
|
import { getCurrentUser } from "#lib/server/user.js";
|
|
|
|
|
|
|
|
|
|
export const GET: APIRoute = async (Astro) => {
|
|
|
|
|
@@ -21,8 +21,8 @@ export const GET: APIRoute = async (Astro) => {
|
|
|
|
|
let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | null = null;
|
|
|
|
|
let aufnahme: Aufnahme = {} as Aufnahme;
|
|
|
|
|
let objekt: Objekt = {} as Objekt;
|
|
|
|
|
let user: Benutzer = {} as Benutzer;
|
|
|
|
|
let bilder: Bild[] = []
|
|
|
|
|
let rechnung: Rechnung | null = null;
|
|
|
|
|
|
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
|
|
|
ausweis = await getVerbrauchsausweisWohnen(ausweis_id)
|
|
|
|
|
@@ -43,15 +43,19 @@ export const GET: APIRoute = async (Astro) => {
|
|
|
|
|
|
|
|
|
|
user = await getCurrentUser(Astro)
|
|
|
|
|
|
|
|
|
|
if (ausweis.rechnung_id) {
|
|
|
|
|
rechnung = await getRechnung(ausweis.rechnung_id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
|
|
|
|
if (/[A-Z]{2}[0-9]{8}/.test(ausweis.id)) {
|
|
|
|
|
const id = ausweis.id.match(/[A-Z]{2}([0-9]{8})/) as RegExpMatchArray
|
|
|
|
|
// Dieser Ausweis wurde mit der alten Version erstellt, das PDF sollte bereits existieren.
|
|
|
|
|
pdf = await getS3File("ibc-pdfs", `ID_${id[1]}_Datenblatt.pdf`)
|
|
|
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, user, bilder);
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, rechnung, bilder);
|
|
|
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, user, bilder);
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, rechnung, bilder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Response(pdf, {
|
|
|
|
|
@@ -65,31 +69,17 @@ export const POST: APIRoute = async (Astro) => {
|
|
|
|
|
const body = await Astro.request.text();
|
|
|
|
|
const params = new URLSearchParams(body);
|
|
|
|
|
|
|
|
|
|
const caller = createCaller(Astro);
|
|
|
|
|
|
|
|
|
|
const ausweis = JSON.parse(params.get("ausweis") || "{}");
|
|
|
|
|
const aufnahme = JSON.parse(params.get("aufnahme") || "{}");
|
|
|
|
|
const objekt = JSON.parse(params.get("objekt") || "{}");
|
|
|
|
|
const bilder = JSON.parse(params.get("bilder") || "{}");
|
|
|
|
|
const ausweisart: Enums.Ausweisart = JSON.parse(params.get("ausweisart") || "")
|
|
|
|
|
|
|
|
|
|
let user: BenutzerClient = {};
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
user = await caller.user.self.GET.fetch(undefined, {
|
|
|
|
|
headers: {
|
|
|
|
|
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, user, bilder);
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, null, bilder);
|
|
|
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, user, bilder);
|
|
|
|
|
pdf = await pdfDatenblattVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, null, bilder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Response(pdf, {
|
|
|
|
|
|