215 lines
5.7 KiB
TypeScript
215 lines
5.7 KiB
TypeScript
import {
|
|
AufnahmeClient,
|
|
BedarfsausweisWohnenClient,
|
|
BenutzerClient,
|
|
BildClient,
|
|
getAusweisartFromId,
|
|
ObjektClient,
|
|
RechnungClient,
|
|
VerbrauchsausweisGewerbeClient,
|
|
VerbrauchsausweisWohnenClient,
|
|
} from "#components/Ausweis/types.js";
|
|
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
|
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
|
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
|
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
|
|
import { pdfAushangVerbrauchsausweisGewerbe } from "#lib/pdf/pdfAushangVerbrauchsausweisGewerbe.js";
|
|
import {
|
|
BedarfsausweisWohnen,
|
|
Enums,
|
|
prisma,
|
|
Rechnung,
|
|
VerbrauchsausweisGewerbe,
|
|
VerbrauchsausweisWohnen,
|
|
} from "#lib/server/prisma.js";
|
|
|
|
/**
|
|
* Gibt den richtigen Prisma Adapter für die Ausweisart basierend auf der UID zurück, oder null bei einer falschen UID.
|
|
* @param id Die Ausweis UID
|
|
*/
|
|
export function getPrismaAusweisAdapter(id: string) {
|
|
const ausweisart = getAusweisartFromId(id);
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
return prisma.verbrauchsausweisWohnen;
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
return prisma.verbrauchsausweisGewerbe;
|
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
|
return prisma.bedarfsausweisWohnen;
|
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
|
return prisma.gEGNachweisWohnen;
|
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
|
return prisma.gEGNachweisGewerbe;
|
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
|
return prisma.bedarfsausweisGewerbe;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück.
|
|
* @param ausweis
|
|
*/
|
|
export async function getAnsichtsausweis(
|
|
ausweis:
|
|
| VerbrauchsausweisWohnenClient
|
|
| VerbrauchsausweisGewerbeClient
|
|
| BedarfsausweisWohnenClient,
|
|
aufnahme: AufnahmeClient,
|
|
objekt: ObjektClient,
|
|
bilder: BildClient[],
|
|
user: BenutzerClient,
|
|
vorschau: boolean = true,
|
|
ausweisart = getAusweisartFromId(ausweis.id)
|
|
) {
|
|
if (!ausweisart) {
|
|
return null;
|
|
}
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
return await pdfVerbrauchsausweisWohnen(
|
|
ausweis as VerbrauchsausweisWohnenClient,
|
|
aufnahme,
|
|
objekt,
|
|
bilder,
|
|
user,
|
|
vorschau
|
|
);
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
return await pdfVerbrauchsausweisGewerbe(
|
|
ausweis as VerbrauchsausweisGewerbeClient,
|
|
aufnahme,
|
|
objekt,
|
|
bilder,
|
|
user,
|
|
vorschau
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Gibt das richtige Datenblatt basierend auf der Ausweisart zurück.
|
|
* @param ausweis
|
|
*/
|
|
export async function getDatenblatt(
|
|
ausweis:
|
|
| VerbrauchsausweisWohnenClient
|
|
| VerbrauchsausweisGewerbeClient
|
|
| BedarfsausweisWohnenClient,
|
|
aufnahme: AufnahmeClient,
|
|
objekt: ObjektClient,
|
|
bilder: BildClient[],
|
|
user: BenutzerClient,
|
|
rechnung: Rechnung,
|
|
ausweisart = getAusweisartFromId(ausweis.id)
|
|
) {
|
|
if (!ausweisart) {
|
|
return null;
|
|
}
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
|
return await pdfDatenblattVerbrauchsausweisWohnen(
|
|
ausweis as VerbrauchsausweisWohnenClient,
|
|
aufnahme,
|
|
objekt,
|
|
rechnung,
|
|
bilder
|
|
);
|
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
return await pdfDatenblattVerbrauchsausweisGewerbe(
|
|
ausweis as VerbrauchsausweisGewerbeClient,
|
|
aufnahme,
|
|
objekt,
|
|
rechnung,
|
|
bilder
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Gibt den richtigen Aushang basierend auf der Ausweisart zurück.
|
|
* @param ausweis
|
|
*/
|
|
export async function getAushang(
|
|
ausweis:
|
|
| VerbrauchsausweisWohnenClient
|
|
| VerbrauchsausweisGewerbeClient
|
|
| BedarfsausweisWohnenClient,
|
|
aufnahme: AufnahmeClient,
|
|
objekt: ObjektClient,
|
|
bilder: BildClient[],
|
|
user: BenutzerClient,
|
|
vorschau: boolean = true,
|
|
rechnung: Rechnung,
|
|
ausweisart = getAusweisartFromId(ausweis.id)
|
|
) {
|
|
if (!ausweisart || !rechnung.services.includes(Enums.Service.Aushang)) {
|
|
return null;
|
|
}
|
|
|
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
|
return await pdfAushangVerbrauchsausweisGewerbe(
|
|
ausweis as VerbrauchsausweisGewerbeClient,
|
|
aufnahme,
|
|
objekt,
|
|
bilder,
|
|
user,
|
|
vorschau
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Extrahiert die Ausweisfelder aus einem Objekt, das mehrere Ausweisarten enthält, und fasst sie in einem gemeinsamen Feld `ausweis` zusammen.
|
|
* @param row Ein Objekt, das die Ausweisfelder enthält.
|
|
* @returns Ein neues Objekt, das die Ausweisfelder extrahiert und in einem gemeinsamen Feld `ausweis` zusammenfasst.
|
|
*/
|
|
export function extrahiereAusweisAusFeldMitMehrerenAusweisen<T>(
|
|
row: T & {
|
|
bedarfsausweis_wohnen?: BedarfsausweisWohnen;
|
|
verbrauchsausweis_wohnen?: VerbrauchsausweisWohnen;
|
|
verbrauchsausweis_gewerbe?: VerbrauchsausweisGewerbe;
|
|
}
|
|
) {
|
|
const {
|
|
bedarfsausweis_wohnen,
|
|
verbrauchsausweis_wohnen,
|
|
verbrauchsausweis_gewerbe,
|
|
...rest
|
|
} = row;
|
|
return {
|
|
...rest,
|
|
ausweis: {
|
|
...(bedarfsausweis_wohnen ??
|
|
verbrauchsausweis_wohnen ??
|
|
verbrauchsausweis_gewerbe),
|
|
ausweisart: bedarfsausweis_wohnen
|
|
? Enums.Ausweisart.BedarfsausweisWohnen
|
|
: verbrauchsausweis_wohnen
|
|
? Enums.Ausweisart.VerbrauchsausweisWohnen
|
|
: Enums.Ausweisart.VerbrauchsausweisGewerbe,
|
|
ausweistyp: bedarfsausweis_wohnen
|
|
? bedarfsausweis_wohnen.ausweistyp
|
|
: verbrauchsausweis_wohnen
|
|
? verbrauchsausweis_wohnen.ausweistyp
|
|
: verbrauchsausweis_gewerbe?.ausweistyp || Enums.AusweisTyp.Standard,
|
|
},
|
|
} as {
|
|
ausweis: (
|
|
| BedarfsausweisWohnen
|
|
| VerbrauchsausweisWohnen
|
|
| VerbrauchsausweisGewerbe
|
|
) & { ausweisart: Enums.Ausweisart };
|
|
} & Omit<
|
|
T,
|
|
| "bedarfsausweis_wohnen"
|
|
| "verbrauchsausweis_wohnen"
|
|
| "verbrauchsausweis_gewerbe"
|
|
>;
|
|
}
|