Dashboard, Types und Formular
This commit is contained in:
@@ -19,9 +19,9 @@ export type UploadedGebaeudeBild = Omit<
|
|||||||
* @export
|
* @export
|
||||||
* @typedef {VerbrauchsausweisWohnenClient}
|
* @typedef {VerbrauchsausweisWohnenClient}
|
||||||
*/
|
*/
|
||||||
export type VerbrauchsausweisWohnenClient = inferProcedureInput<
|
export type VerbrauchsausweisWohnenClient = inferProcedureOutput<
|
||||||
AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
|
AppRouter["v1"]["verbrauchsausweisWohnen"]["get"]
|
||||||
>["ausweis"];
|
>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Das ist der Typescript Type für den Verbrauchsausweis Gewerbe mit allen Feldern die
|
* Das ist der Typescript Type für den Verbrauchsausweis Gewerbe mit allen Feldern die
|
||||||
@@ -63,12 +63,13 @@ export type BedarfsausweisWohnenClient = inferProcedureInput<
|
|||||||
* @export
|
* @export
|
||||||
* @typedef {GebaeudeClient}
|
* @typedef {GebaeudeClient}
|
||||||
*/
|
*/
|
||||||
export type GebaeudeClient = inferProcedureInput<
|
export type GebaeudeClient = inferProcedureOutput<
|
||||||
AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
|
AppRouter["v1"]["verbrauchsausweisWohnen"]["get"]
|
||||||
>["gebaeude"];
|
>["gebaeude_aufnahme_allgemein"]["gebaeude_stammdaten"];
|
||||||
|
|
||||||
export type GebaeudeAufnahmeClient = inferProcedureInput<
|
|
||||||
AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
|
export type GebaeudeAufnahmeClient = inferProcedureOutput<
|
||||||
|
AppRouter["v1"]["verbrauchsausweisWohnen"]["get"]
|
||||||
>["gebaeude_aufnahme_allgemein"];
|
>["gebaeude_aufnahme_allgemein"];
|
||||||
|
|
||||||
export type BenutzerClient = inferProcedureOutput<AppRouter["v1"]["benutzer"]["fromPublicId"]>
|
export type BenutzerClient = inferProcedureOutput<AppRouter["v1"]["benutzer"]["fromPublicId"]>
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import {
|
import {
|
||||||
GebaeudeAufnahmeClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
GebaeudeClient,
|
|
||||||
VerbrauchsausweisWohnenClient,
|
|
||||||
} from "#components/Ausweis/types";
|
} from "#components/Ausweis/types";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { dialogs } from "svelte-dialogs";
|
import { dialogs } from "svelte-dialogs";
|
||||||
@@ -14,18 +12,15 @@
|
|||||||
QuestionMarkCircled,
|
QuestionMarkCircled,
|
||||||
} from "radix-svelte-icons";
|
} from "radix-svelte-icons";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||||
import { GebaeudeBilder } from "@ibcornelsen/database/client";
|
import { client } from "src/trpc";
|
||||||
|
import { verbrauchsausweisWohnenCalculateFormProgress } from "#lib/VerbrauchsausweisWohnen/calculateFormProgress";
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient & {
|
import { number } from "zod";
|
||||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
|
||||||
gebaeude_stammdaten: GebaeudeClient & {
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
gebaeude_bilder: GebaeudeBilder[];
|
export let progress: number;
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
async function ausweisStornieren() {
|
async function ausweisStornieren() {
|
||||||
const result = dialogs.confirm({
|
const result = await dialogs.confirm({
|
||||||
title: "Ausweis Stornieren",
|
title: "Ausweis Stornieren",
|
||||||
text: "Sind sie sich sicher, dass sie den Ausweis stornieren möchten? Diese Operation kann nicht rückgängig gemacht werden!",
|
text: "Sind sie sich sicher, dass sie den Ausweis stornieren möchten? Diese Operation kann nicht rückgängig gemacht werden!",
|
||||||
confirmButtonText: "Ausweis Stornieren",
|
confirmButtonText: "Ausweis Stornieren",
|
||||||
@@ -39,20 +34,37 @@
|
|||||||
footerClass: "bg-base-100 justify-center gap-4 mt-4",
|
footerClass: "bg-base-100 justify-center gap-4 mt-4",
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Ausweis Stornieren falls result == true
|
if (result === true) {
|
||||||
|
await client.v1.verbrauchsausweisWohnen.stornieren.mutate({
|
||||||
|
uid: ausweis.uid
|
||||||
|
})
|
||||||
|
|
||||||
|
ausweis.gebaeude_aufnahme_allgemein.storniert = true;
|
||||||
|
ausweis = ausweis;
|
||||||
|
|
||||||
|
dialogs.alert({
|
||||||
|
title: "Ausweis Storniert",
|
||||||
|
text: "Der Ausweis wurde erfolgreich storniert.",
|
||||||
|
dismissButtonText: "Schließen",
|
||||||
|
dismissButtonClass: "btn btn-primary",
|
||||||
|
dialogClass: "modal-box",
|
||||||
|
headerClass: "bg-base-100 text-center",
|
||||||
|
titleClass: "text-base-content text-xl font-medium",
|
||||||
|
dividerClass: "hidden",
|
||||||
|
footerClass: "bg-base-100 justify-center gap-4 mt-4",
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let hilfeModal: HTMLDialogElement;
|
let hilfeModal: HTMLDialogElement;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="card lg:card-side bg-base-200 card-bordered border-base-300">
|
<div class="card lg:card-side bg-base-200 card-bordered border-base-300">
|
||||||
<!--
|
{#if ausweis.gebaeude_aufnahme_allgemein.storniert}
|
||||||
TODO: Storniert Feld hinzufügen
|
<div class="absolute top-0 left-0 w-full h-full bg-[rgba(0,0,0,0.7)] z-[5] rounded-lg select-none">
|
||||||
{#if ausweis.storniert}
|
<h1 class="absolute -rotate-[25deg] text-7xl tracking-wide uppercase text-red-500 border-4 border-red-500 rounded-lg top-[50%] translate-y-[-50%] left-[50%] translate-x-[-50%]">Storniert</h1>
|
||||||
<div class="absolute top-0 left-0 w-full h-full bg-[rgba(0,0,0,0.7)] z-[5] rounded-lg select-none">
|
</div>
|
||||||
<h1 class="absolute -rotate-[25deg] text-7xl tracking-wide uppercase text-red-500 border-4 border-red-500 rounded-lg top-[50%] translate-y-[-50%] left-[50%] translate-x-[-50%]">Storniert</h1>
|
{/if}
|
||||||
</div>
|
|
||||||
{/if} -->
|
|
||||||
<figure class="lg:w-1/2">
|
<figure class="lg:w-1/2">
|
||||||
<img
|
<img
|
||||||
src={(ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder && `/bilder/${ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder[0]?.uid}.webp`) || "/images/placeholder.jpg"}
|
src={(ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder && `/bilder/${ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder[0]?.uid}.webp`) || "/images/placeholder.jpg"}
|
||||||
@@ -85,16 +97,29 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row flex-wrap gap-2">
|
<div class="flex flex-row flex-wrap gap-2">
|
||||||
|
{#if ausweis.ausweisart == "VerbrauchsausweisWohnen"}
|
||||||
<div class="badge badge-accent font-semibold">
|
<div class="badge badge-accent font-semibold">
|
||||||
Verbrauchsausweis
|
Verbrauchsausweis Wohnen
|
||||||
</div>
|
</div>
|
||||||
|
{:else if ausweis.ausweisart == "BedarfsausweisWohnen"}
|
||||||
|
<div class="badge badge-accent font-semibold">
|
||||||
|
Bedarfsausweis Wohnen
|
||||||
|
</div>
|
||||||
|
{:else if ausweis.ausweisart == "VerbrauchsausweisGewerbe"}
|
||||||
|
<div class="badge badge-accent font-semibold">
|
||||||
|
Verbrauchsausweis Gewerbe
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{#if ausweis.erledigt}
|
||||||
<div class="badge badge-success font-semibold">Ausgestellt</div>
|
<div class="badge badge-success font-semibold">Ausgestellt</div>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<h2 class="card-title">{ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.adresse}</h2>
|
<h2 class="card-title">{ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.adresse}</h2>
|
||||||
<div class="mb-4 flex flex-row items-center gap-4">
|
<div class="mb-4 flex flex-row items-center gap-4">
|
||||||
<progress class="progress w-full" value="54" max="100"></progress>
|
<progress class="progress w-full" value={progress} max="100"></progress>
|
||||||
<!-- TODO: Metrics für den Fortschritt festlegen -->
|
<!-- TODO: Metrics für den Fortschritt festlegen -->
|
||||||
<span class="text-sm font-semibold text-base-content">54%</span>
|
<span class="text-sm font-semibold text-base-content">{progress}%</span>
|
||||||
</div>
|
</div>
|
||||||
{#await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis)}
|
{#await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis)}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
{#if image.kategorie == kategorie}
|
{#if image.kategorie == kategorie}
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
<img
|
<img
|
||||||
src={image.base64}
|
src="/bilder/{image.uid}.webp"
|
||||||
alt={kategorie}
|
alt={kategorie}
|
||||||
class="h-full rounded-lg border-2 group-hover:contrast-50 object-cover transition-all"
|
class="h-full rounded-lg border-2 group-hover:contrast-50 object-cover transition-all"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
export let name: string;
|
export let name: string;
|
||||||
export let readonly: boolean = false;
|
export let readonly: boolean = false;
|
||||||
export let city: string | null;
|
export let city: string | null | undefined;
|
||||||
export let zip: string | null = "";
|
export let zip: string | null = "";
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,7 @@
|
|||||||
import { GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
import { VerbrauchsausweisWohnen, Benutzer, GebaeudeStammdaten, Rechnungen, GebaeudeBilder } from "@ibcornelsen/database/client";
|
|
||||||
|
|
||||||
export type AusweisData = VerbrauchsausweisWohnen & {
|
|
||||||
benutzer: Benutzer;
|
|
||||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
|
||||||
gebaeude_stammdaten: GebaeudeStammdaten & {
|
|
||||||
gebaeude_bilder: GebaeudeBilder[];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rechnungen: Rechnungen;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function convertAusweisData(
|
export function convertAusweisData(
|
||||||
inputs: AusweisData
|
inputs: VerbrauchsausweisWohnenClient
|
||||||
): Record<string, string> {
|
): Record<string, string> {
|
||||||
return {
|
return {
|
||||||
"gebaeude_stammdaten.adresse": inputs.gebaeude_aufnahme_allgemein.adresse || "",
|
"gebaeude_stammdaten.adresse": inputs.gebaeude_aufnahme_allgemein.adresse || "",
|
||||||
|
|||||||
64
src/lib/VerbrauchsausweisWohnen/calculateFormProgress.ts
Normal file
64
src/lib/VerbrauchsausweisWohnen/calculateFormProgress.ts
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
|
|
||||||
|
type AusweisError = {
|
||||||
|
title: string,
|
||||||
|
description: string,
|
||||||
|
severity: "error" | "warning",
|
||||||
|
resolvehref?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Berechnet den Fortschritt im Formular anhand bestimmter Faktoren
|
||||||
|
* Gibt den Fortschritt in Prozent zurück.
|
||||||
|
* @param ausweis Der Verbrauchsausweis
|
||||||
|
* @returns Der Fortschritt in Prozent sowie ein Array mit gefundenen Fehlern
|
||||||
|
*/
|
||||||
|
export function verbrauchsausweisWohnenCalculateFormProgress(ausweis: VerbrauchsausweisWohnenClient): {
|
||||||
|
progress: number;
|
||||||
|
errors: AusweisError[];
|
||||||
|
} {
|
||||||
|
let progress = 0;
|
||||||
|
const errors: AusweisError[] = [];
|
||||||
|
|
||||||
|
if (ausweis.erledigt) {
|
||||||
|
// Der Ausweis wurde ausgestellt, also ist der Fortschritt 100%
|
||||||
|
return {
|
||||||
|
progress: 100,
|
||||||
|
errors: []
|
||||||
|
};
|
||||||
|
} else if (ausweis.gebaeude_aufnahme_allgemein.storniert) {
|
||||||
|
// Der Ausweis wurde storniert, also ist der Fortschritt 0%
|
||||||
|
return {
|
||||||
|
progress: 0,
|
||||||
|
errors: []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ausweis.gebaeude_aufnahme_allgemein.baujahr_gebaeude.length === 0) {
|
||||||
|
errors.push({
|
||||||
|
title: "Fehlendes Baujahr",
|
||||||
|
description: "Eines ihrer Gebäude hat noch kein Baujahr angegeben. Beheben sie dies indem sie auf den untenstehenden Link klicken.",
|
||||||
|
severity: "warning",
|
||||||
|
resolvehref: `/energieausweis-erstellen/verbrauchsausweis-wohnen?uid=${ausweis.uid}`
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ausweis.gebaeude_aufnahme_allgemein.adresse) {
|
||||||
|
progress += 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ausweis.gebaeude_aufnahme_allgemein.ort) {
|
||||||
|
progress += 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
|
||||||
|
progress += 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
progress,
|
||||||
|
errors
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -19,35 +19,39 @@
|
|||||||
import Overlay from "#components/Overlay.svelte";
|
import Overlay from "#components/Overlay.svelte";
|
||||||
import AusweisGespeichertModule from "./AusweisGespeichertModule.svelte";
|
import AusweisGespeichertModule from "./AusweisGespeichertModule.svelte";
|
||||||
import { validateAccessTokenClient } from "src/client/lib/validateAccessToken";
|
import { validateAccessTokenClient } from "src/client/lib/validateAccessToken";
|
||||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
import { VerbrauchsausweisWohnenClient, BenutzerClient } from "#components/Ausweis/types";
|
||||||
import { dialogs } from "svelte-dialogs";
|
import { dialogs } from "svelte-dialogs";
|
||||||
import LoginDialog from "#components/LoginDialog.svelte";
|
import LoginDialog from "#components/LoginDialog.svelte";
|
||||||
|
import { exclude } from "#lib/exclude";
|
||||||
|
|
||||||
export let gebaeude: GebaeudeClient = {} as GebaeudeClient;
|
|
||||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient = {} as GebaeudeAufnahmeClient;
|
|
||||||
export let images: UploadedGebaeudeBild[] = [];
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
||||||
export let user: BenutzerClient = {} as BenutzerClient;
|
export let user: BenutzerClient = {} as BenutzerClient;
|
||||||
|
|
||||||
|
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
|
||||||
|
let gebaeude = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
|
||||||
|
let images = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten?.gebaeude_bilder || [];
|
||||||
|
|
||||||
async function bilderHochladen() {
|
async function bilderHochladen() {
|
||||||
if (images.length == 0) {
|
if (images.length == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const imagesToUpload = images.filter(image => !image.uid);
|
||||||
|
|
||||||
|
if (imagesToUpload.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Alle Bilder hochladen
|
// Alle Bilder hochladen
|
||||||
const notification = addNotification({
|
const notification = addNotification({
|
||||||
dismissable: false,
|
dismissable: false,
|
||||||
message: "Bilder hochladen.",
|
message: "Bilder hochladen.",
|
||||||
subtext: `${images.length} Bilder werden hochgeladen, bitte haben sie Geduld.`,
|
subtext: `${imagesToUpload.length} Bilder werden hochgeladen, bitte haben sie Geduld.`,
|
||||||
timeout: 0,
|
timeout: 0,
|
||||||
type: "info"
|
type: "info"
|
||||||
})
|
})
|
||||||
for (let i = 0; i < images.length; i++) {
|
for (let i = 0; i < imagesToUpload.length; i++) {
|
||||||
const image = images[i];
|
const image = imagesToUpload[i];
|
||||||
if (image.uid) {
|
|
||||||
// Bild wurde bereits hochgeladen, wir müssen es also nicht nochmal hochladen.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await client.v1.bilder.upload.mutate({
|
const response = await client.v1.bilder.upload.mutate({
|
||||||
@@ -61,15 +65,15 @@
|
|||||||
updateNotification(notification, {
|
updateNotification(notification, {
|
||||||
dismissable: true,
|
dismissable: true,
|
||||||
message: "Bild hochgeladen.",
|
message: "Bild hochgeladen.",
|
||||||
subtext: `${i + 1}/${images.length} Bildern wurden erfolgreich hochgeladen, bitte haben sie Geduld.`,
|
subtext: `${i + 1}/${imagesToUpload.length} Bildern wurden erfolgreich hochgeladen.`,
|
||||||
timeout: 4000
|
timeout: 3000
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
updateNotification(notification, {
|
updateNotification(notification, {
|
||||||
dismissable: true,
|
dismissable: true,
|
||||||
message: "Bild konnte nicht hochgeladen werden.",
|
message: "Bild konnte nicht hochgeladen werden.",
|
||||||
subtext: `Bild ${i + 1}/${images.length} konnte nicht hochgeladen werden, wir haben bereits ein Ticket erstellt und melden uns so schnell wie möglich bei ihnen.`,
|
subtext: `Eines ihrer Bilder konnte nicht hochgeladen werden. Wir haben bereits ein Ticket erstellt und melden uns so schnell wie möglich bei ihnen.`,
|
||||||
timeout: 150000,
|
timeout: 15000,
|
||||||
type: "error"
|
type: "error"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -92,10 +96,17 @@
|
|||||||
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
|
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
|
||||||
// Jetzt müssen wir ihn nun nur noch abspeichern.
|
// Jetzt müssen wir ihn nun nur noch abspeichern.
|
||||||
try {
|
try {
|
||||||
|
const gebaeudeBilderEntfernt = exclude(gebaeude, ["gebaeude_bilder"])
|
||||||
|
const gebaeudeAufnahmeGeneratedFieldsEntfernt = exclude(gebaeude_aufnahme_allgemein, ["erstellungsdatum"])
|
||||||
|
const ausweisGeneratedFieldsEntfernt = exclude(ausweis, ["ausweisart", "rechnungen"])
|
||||||
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
|
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
|
||||||
ausweis,
|
...ausweisGeneratedFieldsEntfernt,
|
||||||
gebaeude,
|
gebaeude_aufnahme_allgemein: {
|
||||||
gebaeude_aufnahme_allgemein
|
...gebaeudeAufnahmeGeneratedFieldsEntfernt,
|
||||||
|
gebaeude_stammdaten: {
|
||||||
|
...gebaeudeBilderEntfernt
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
await bilderHochladen();
|
await bilderHochladen();
|
||||||
@@ -108,9 +119,13 @@
|
|||||||
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
|
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
|
||||||
try {
|
try {
|
||||||
const response = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
|
const response = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
|
||||||
ausweis,
|
...ausweis,
|
||||||
gebaeude,
|
gebaeude_aufnahme_allgemein: {
|
||||||
gebaeude_aufnahme_allgemein
|
...gebaeude_aufnahme_allgemein,
|
||||||
|
gebaeude_stammdaten: {
|
||||||
|
...gebaeude
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
ausweis.uid = response.uid;
|
ausweis.uid = response.uid;
|
||||||
gebaeude.uid = response.gebaeude_uid;
|
gebaeude.uid = response.gebaeude_uid;
|
||||||
|
|||||||
@@ -1,60 +1,73 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { BenutzerClient } from "#components/Ausweis/types";
|
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
|
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
|
||||||
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
|
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
|
||||||
|
import { verbrauchsausweisWohnenCalculateFormProgress } from "#lib/VerbrauchsausweisWohnen/calculateFormProgress";
|
||||||
import { client } from "src/trpc";
|
import { client } from "src/trpc";
|
||||||
|
import { onMount } from "svelte";
|
||||||
export let user: BenutzerClient;
|
export let user: BenutzerClient;
|
||||||
|
|
||||||
let ausweisRequest = client.v1.benutzer.getAusweise.query({
|
let ausweise: VerbrauchsausweisWohnenClient[] | null = null;
|
||||||
limit: 10
|
|
||||||
});
|
let ausweisUeberpruefung: ReturnType<typeof verbrauchsausweisWohnenCalculateFormProgress>[] = [];
|
||||||
|
let errorCount = 0;
|
||||||
|
|
||||||
|
onMount(async () => {
|
||||||
|
ausweise = await client.v1.verbrauchsausweisWohnen.getMany.query({
|
||||||
|
limit: 10
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!ausweise) return;
|
||||||
|
|
||||||
|
ausweisUeberpruefung = ausweise.map(ausweis => verbrauchsausweisWohnenCalculateFormProgress(ausweis));
|
||||||
|
|
||||||
|
errorCount = ausweisUeberpruefung.reduce((acc, { errors }) => acc + errors.length, 0);
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
{#if errorCount > 0}
|
||||||
<h1 class="text-4xl font-medium my-8">Wichtiges</h1>
|
<h1 class="text-4xl font-medium my-8">Wichtiges</h1>
|
||||||
|
|
||||||
<div class="flex flex-row gap-4">
|
<div class="flex flex-row gap-4 overflow-x-auto">
|
||||||
<div class="card w-96 card-bordered bg-base-200 border-base-300">
|
{#each ausweisUeberpruefung as { errors }}
|
||||||
<div class="card-body">
|
{#if errors.length > 0}
|
||||||
<div class="badge badge-warning font-semibold">Warnung!</div>
|
<div class="card w-96 card-bordered bg-base-200 border-base-300">
|
||||||
<h2 class="card-title">Gebäudebilder</h2>
|
<div class="card-body">
|
||||||
<p>Wir haben festgestellt, dass die Bilder für eines ihrer Gebäude nicht ganz den Anforderungen entsprechen, beheben sie das Problem, damit der Fehler so schnell wie möglich behoben werden kann.</p>
|
<div class="badge font-semibold" class:badge-warning={errors[0].severity == "warning"} class:badge-error={errors[0].severity == "error"}>{errors[0].severity == "error" ? "Achtung!" : "Wichtig!"}</div>
|
||||||
<div class="card-actions justify-end">
|
<h2 class="card-title">{errors[0].title}</h2>
|
||||||
<a class="btn btn-primary">Beheben</a>
|
<p>{errors[0].description}</p>
|
||||||
|
{#if errors[0].resolvehref}
|
||||||
|
<div class="card-actions justify-end">
|
||||||
|
<a class="btn btn-primary" href={errors[0].resolvehref}>Beheben</a>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{/if}
|
||||||
</div>
|
{/each}
|
||||||
<div class="card w-96 card-bordered bg-base-200 border-base-300">
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="badge badge-error font-semibold">Fehler!</div>
|
|
||||||
<h2 class="card-title">Daten</h2>
|
|
||||||
<p>Der Ausweis für <strong>Curslacker Deich 170</strong> hat unvollständige Daten oder die gegebenen Daten sind fehlerhaft, bitte beheben sie das Problem, damit der Ausweis so schnell wie möglich ausgestellt werden kann.</p>
|
|
||||||
<div class="card-actions justify-end">
|
|
||||||
<a class="btn btn-primary">Beheben</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<h1 class="text-4xl font-medium my-8">Ihre Ausweise</h1>
|
<h1 class="text-4xl font-medium my-8">Ihre Ausweise</h1>
|
||||||
|
|
||||||
<div class="grid xl:grid-cols-2 grid-cols-1 gap-4">
|
<div class="grid xl:grid-cols-2 grid-cols-1 gap-4">
|
||||||
|
|
||||||
{#await ausweisRequest}
|
{#if ausweise === null}
|
||||||
<DashboardAusweisSkeleton></DashboardAusweisSkeleton>
|
<DashboardAusweisSkeleton></DashboardAusweisSkeleton>
|
||||||
<DashboardAusweisSkeleton></DashboardAusweisSkeleton>
|
{:else}
|
||||||
|
|
||||||
{:then ausweise}
|
|
||||||
{#if ausweise.length == 0}
|
{#if ausweise.length == 0}
|
||||||
<div class="">
|
<div class="">
|
||||||
<h1 class="text-2xl">Es konnten keine Ausweise gefunden werden.</h1>
|
<h1 class="text-2xl">Es konnten keine Ausweise gefunden werden.</h1>
|
||||||
<p>Erstellen sie einen Verbrauchsausweis für ihr Wohngebäude <a href="/energieausweis-erstellen/verbrauchsausweis-wohnen">hier</a></p>
|
<p>Erstellen sie einen Verbrauchsausweis für ihr Wohngebäude <a href="/energieausweis-erstellen/verbrauchsausweis-wohnen">hier</a></p>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
{#each ausweise as ausweis}
|
{#each ausweise as ausweis, i}
|
||||||
<DashboardAusweis {ausweis}></DashboardAusweis>
|
<DashboardAusweis progress={ausweisUeberpruefung[i]?.progress || 0} {ausweis}></DashboardAusweis>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
{/await}
|
{/if}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
|
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
|
||||||
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
|
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
|
||||||
|
import { verbrauchsausweisWohnenCalculateFormProgress } from "#lib/VerbrauchsausweisWohnen/calculateFormProgress";
|
||||||
export let user: BenutzerClient;
|
export let user: BenutzerClient;
|
||||||
export let ausweise: VerbrauchsausweisWohnenClient[];
|
export let ausweise: VerbrauchsausweisWohnenClient[];
|
||||||
|
|
||||||
console.log(ausweise);
|
const ausweisUeberpruefung = ausweise.map(ausweis => verbrauchsausweisWohnenCalculateFormProgress(ausweis));
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -41,8 +42,9 @@
|
|||||||
{#if ausweise.length == 0}
|
{#if ausweise.length == 0}
|
||||||
|
|
||||||
{:else}
|
{:else}
|
||||||
{#each ausweise as ausweis}
|
{#each ausweise as ausweis, i}
|
||||||
<DashboardAusweis {ausweis}></DashboardAusweis>
|
{console.log(ausweis, i)}
|
||||||
|
<DashboardAusweis progress={ausweisUeberpruefung[i].progress} {ausweis}></DashboardAusweis>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import HelpLabel from "#components/HelpLabel.svelte";
|
|
||||||
import ZipSearch from "../components/PlzSuche.svelte";
|
import ZipSearch from "../components/PlzSuche.svelte";
|
||||||
import Label from "../components/Label.svelte";
|
import Label from "../components/Label.svelte";
|
||||||
import type {
|
import type {
|
||||||
@@ -15,12 +14,12 @@
|
|||||||
import type { inferProcedureInput } from "@trpc/server";
|
import type { inferProcedureInput } from "@trpc/server";
|
||||||
import type { AppRouter } from "@ibcornelsen/api";
|
import type { AppRouter } from "@ibcornelsen/api";
|
||||||
import CheckoutItem from "#components/CheckoutItem.svelte";
|
import CheckoutItem from "#components/CheckoutItem.svelte";
|
||||||
|
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
|
|
||||||
export let user: Benutzer;
|
export let user: BenutzerClient;
|
||||||
export let ausweis:
|
export let ausweis:
|
||||||
| VerbrauchsausweisWohnen
|
| VerbrauchsausweisWohnenClient;
|
||||||
| BedarfsausweisWohnen
|
// TODO: überarbeiten und zu inferProcedureOutput machen
|
||||||
| VerbrauchsausweisGewerbe;
|
|
||||||
let rechnung: inferProcedureInput<
|
let rechnung: inferProcedureInput<
|
||||||
AppRouter["v1"]["rechnungen"]["erstellen"]
|
AppRouter["v1"]["rechnungen"]["erstellen"]
|
||||||
> = {};
|
> = {};
|
||||||
@@ -53,7 +52,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
export let selectedPaymentType: Bezahlmethoden =
|
export let selectedPaymentType: Bezahlmethoden =
|
||||||
Enums.Bezahlmethoden.PAYPAL;
|
Enums.Bezahlmethoden.paypal;
|
||||||
|
|
||||||
let agbAkzeptiert: boolean;
|
let agbAkzeptiert: boolean;
|
||||||
let datenschutzAkzeptiert: boolean;
|
let datenschutzAkzeptiert: boolean;
|
||||||
|
|||||||
@@ -1,19 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ProgressBar from "#components/Ausweis/Progressbar.svelte";
|
import ProgressBar from "#components/Ausweis/Progressbar.svelte";
|
||||||
import type {
|
import type {
|
||||||
BedarfsausweisWohnen,
|
|
||||||
Benutzer,
|
|
||||||
Bezahlmethoden,
|
Bezahlmethoden,
|
||||||
VerbrauchsausweisGewerbe,
|
|
||||||
VerbrauchsausweisWohnen,
|
|
||||||
} from "@ibcornelsen/database/client";
|
} from "@ibcornelsen/database/client";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "@ibcornelsen/database/client";
|
||||||
|
|
||||||
export let user: Benutzer;
|
export let user: BenutzerClient;
|
||||||
export let ausweis:
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
| VerbrauchsausweisWohnen
|
|
||||||
| BedarfsausweisWohnen
|
|
||||||
| VerbrauchsausweisGewerbe;
|
|
||||||
|
|
||||||
let services = [
|
let services = [
|
||||||
{
|
{
|
||||||
@@ -46,6 +39,7 @@
|
|||||||
Enums.Bezahlmethoden.paypal;
|
Enums.Bezahlmethoden.paypal;
|
||||||
|
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
|
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
|
|
||||||
const prices = PRICES[ausweis.ausweisart];
|
const prices = PRICES[ausweis.ausweisart];
|
||||||
|
|
||||||
|
|||||||
@@ -2,69 +2,29 @@
|
|||||||
|
|
||||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||||
import VerbrauchsausweisWohnenModule from "#modules/Ausweise/VerbrauchsausweisWohnenModule.svelte";
|
import VerbrauchsausweisWohnenModule from "#modules/Ausweise/VerbrauchsausweisWohnenModule.svelte";
|
||||||
import { prisma } from "@ibcornelsen/database/server";
|
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||||
import { exclude } from "#lib/exclude";
|
|
||||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
|
||||||
import { createCaller } from "#lib/caller";
|
import { createCaller } from "#lib/caller";
|
||||||
import { API_UID_COOKIE_NAME } from "#lib/constants";
|
|
||||||
|
|
||||||
const uid = Astro.url.searchParams.get("uid");
|
const uid = Astro.url.searchParams.get("uid");
|
||||||
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
||||||
let gebaeude: GebaeudeClient = {} as GebaeudeClient;
|
|
||||||
let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient = {} as GebaeudeAufnahmeClient;
|
const caller = createCaller(Astro);
|
||||||
let images: UploadedGebaeudeBild[] = [];
|
|
||||||
|
|
||||||
if (uid) {
|
if (uid) {
|
||||||
const request = await prisma.verbrauchsausweisWohnen.findUnique({
|
ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||||
where: { uid },
|
uid: uid
|
||||||
include: {
|
|
||||||
gebaeude_aufnahme_allgemein: {
|
|
||||||
include: {
|
|
||||||
gebaeude_stammdaten: {
|
|
||||||
include: {
|
|
||||||
gebaeude_bilder: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
if (request) {
|
if (!ausweis) {
|
||||||
images = (await Promise.all(request.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder.map(async bild => {
|
// Der Ausweis scheint nicht zu existieren.
|
||||||
try {
|
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
||||||
const response = await createCaller(Astro).v1.bilder.getBase64({uid: bild.uid});
|
return Astro.redirect("/energieausweis-erstellen/verbrauchsausweis-wohnen");
|
||||||
return {
|
|
||||||
base64: `data:image/webp;charset=utf-8;base64, ${response.base64}`,
|
|
||||||
uid: bild.uid,
|
|
||||||
kategorie: bild.kategorie
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}))).filter(x => x !== null) as UploadedGebaeudeBild[];
|
|
||||||
|
|
||||||
let { gebaeude_aufnahme_allgemein: {
|
|
||||||
gebaeude_stammdaten: { gebaeude_bilder, ...request_gebaeude_stammdaten },
|
|
||||||
...request_gebaeude_aufnahme_allgemein
|
|
||||||
}, ...request_ausweis } = request;
|
|
||||||
|
|
||||||
ausweis = exclude(request_ausweis, ["id", "gebaeudeaufnahme_allgemein_id", "ausweisart", "benutzer_id", "rechnungen_id"]) satisfies VerbrauchsausweisWohnenClient;
|
|
||||||
gebaeude = exclude(request_gebaeude_stammdaten, ["id", "benutzer_id"]) satisfies GebaeudeClient;
|
|
||||||
gebaeude_aufnahme_allgemein = exclude(request_gebaeude_aufnahme_allgemein, ["id", "gebaeude_stammdaten_id"]) satisfies GebaeudeAufnahmeClient;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const benutzerUid = Astro.cookies.get(API_UID_COOKIE_NAME).value
|
const user = await caller.v1.benutzer.self();
|
||||||
let user: BenutzerClient = {} as BenutzerClient;
|
|
||||||
if (benutzerUid) {
|
|
||||||
user = await createCaller(Astro).v1.benutzer.fromPublicId({
|
|
||||||
uid: benutzerUid
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||||
<VerbrauchsausweisWohnenModule client:load images={images} ausweis={ausweis} gebaeude={gebaeude} />
|
<VerbrauchsausweisWohnenModule client:load ausweis={ausweis} />
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import KaufabschlussModule from "#modules/KaufabschlussModule.svelte";
|
|||||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||||
import { Benutzer, Enums } from "@ibcornelsen/database/client";
|
import { Benutzer, Enums } from "@ibcornelsen/database/client";
|
||||||
import { prisma } from "@ibcornelsen/database/server";
|
import { prisma } from "@ibcornelsen/database/server";
|
||||||
|
import { createCaller } from "#lib/caller";
|
||||||
|
|
||||||
// Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde.
|
// Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde.
|
||||||
const uidAusweis = Astro.url.searchParams.get("uid");
|
const uidAusweis = Astro.url.searchParams.get("uid");
|
||||||
@@ -18,24 +19,20 @@ if (!uid) {
|
|||||||
return Astro.redirect("/401");
|
return Astro.redirect("/401");
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await prisma.benutzer.findUnique({
|
const caller = createCaller(Astro);
|
||||||
where: {
|
|
||||||
uid
|
|
||||||
},
|
|
||||||
}) as Benutzer;
|
|
||||||
|
|
||||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||||
where: {
|
uid: uidAusweis
|
||||||
uid: uidAusweis,
|
})
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!ausweis) {
|
const user = await caller.v1.benutzer.self();
|
||||||
|
|
||||||
|
if (!ausweis || !user) {
|
||||||
return Astro.redirect("/404");
|
return Astro.redirect("/404");
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
||||||
<KaufabschlussModule user={user} ausweis={ausweis} selectedPaymentType={Enums.Bezahlmethoden.PAYPAL} client:load></KaufabschlussModule>
|
<KaufabschlussModule user={user} ausweis={ausweis} selectedPaymentType={Enums.Bezahlmethoden.paypal} client:load></KaufabschlussModule>
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
import KundendatenModule from "#modules/KundendatenModule.svelte";
|
import KundendatenModule from "#modules/KundendatenModule.svelte";
|
||||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||||
import { Benutzer, Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "@ibcornelsen/database/client";
|
||||||
import { prisma } from "@ibcornelsen/database/server";
|
import { createCaller } from "#lib/caller";
|
||||||
|
|
||||||
// Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde.
|
// Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde.
|
||||||
const uidAusweis = Astro.url.searchParams.get("uid");
|
const uidAusweis = Astro.url.searchParams.get("uid");
|
||||||
@@ -18,24 +18,20 @@ if (!uid) {
|
|||||||
return Astro.redirect("/401");
|
return Astro.redirect("/401");
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await prisma.benutzer.findUnique({
|
const caller = createCaller(Astro);
|
||||||
where: {
|
|
||||||
uid
|
|
||||||
},
|
|
||||||
}) as Benutzer;
|
|
||||||
|
|
||||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||||
where: {
|
uid: uidAusweis
|
||||||
uid: uidAusweis,
|
})
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!ausweis) {
|
const user = await caller.v1.benutzer.self();
|
||||||
|
|
||||||
|
if (!ausweis || !user) {
|
||||||
return Astro.redirect("/404");
|
return Astro.redirect("/404");
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
||||||
<KundendatenModule user={user} ausweis={ausweis} selectedPaymentType={Enums.Bezahlmethoden.PAYPAL} client:load></KundendatenModule>
|
<KundendatenModule user={user} ausweis={ausweis} selectedPaymentType={Enums.Bezahlmethoden.paypal} client:load></KundendatenModule>
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
---
|
---
|
||||||
import {
|
|
||||||
GebaeudeStammdaten,
|
|
||||||
VerbrauchsausweisWohnen,
|
|
||||||
prisma,
|
|
||||||
} from "@ibcornelsen/database/server";
|
|
||||||
import { generate } from "@pdfme/generator";
|
import { generate } from "@pdfme/generator";
|
||||||
|
|
||||||
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
||||||
import { convertAusweisData } from "#lib/AusweisData";
|
import { convertAusweisData } from "#lib/AusweisData";
|
||||||
import { variable } from "#lib/pdf/plugins/variables";
|
import { variable } from "#lib/pdf/plugins/variables";
|
||||||
import { text, image } from "@pdfme/schemas"
|
import { text, image } from "@pdfme/schemas"
|
||||||
|
import { createCaller } from "#lib/caller";
|
||||||
|
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
|
|
||||||
const base64 = Astro.url.searchParams.get("base64");
|
const base64 = Astro.url.searchParams.get("base64");
|
||||||
let ausweis: (Partial<VerbrauchsausweisWohnen> & { gebaeude_stammdaten: Partial<GebaeudeStammdaten> }) | null = null;
|
let ausweis: VerbrauchsausweisWohnenClient | null = null;
|
||||||
if (base64) {
|
if (base64) {
|
||||||
const buffer = Buffer.from(base64, "base64");
|
const buffer = Buffer.from(base64, "base64");
|
||||||
const json = buffer.toString("utf-8");
|
const json = buffer.toString("utf-8");
|
||||||
ausweis = JSON.parse(json);
|
ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
|
||||||
} else {
|
} else {
|
||||||
const uidAusweis = Astro.url.searchParams.get("ausweis_uid");
|
const uidAusweis = Astro.url.searchParams.get("ausweis_uid");
|
||||||
|
|
||||||
@@ -24,22 +20,11 @@ if (base64) {
|
|||||||
return Astro.redirect("/404");
|
return Astro.redirect("/404");
|
||||||
}
|
}
|
||||||
|
|
||||||
ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const caller = createCaller(Astro);
|
||||||
where: {
|
|
||||||
uid: uidAusweis,
|
ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||||
},
|
uid: uidAusweis
|
||||||
include: {
|
})
|
||||||
gebaeude_aufnahme_allgemein: {
|
|
||||||
include: {
|
|
||||||
gebaeude_stammdaten: {
|
|
||||||
include: {
|
|
||||||
gebaeude_bilder: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ausweis) {
|
if (!ausweis) {
|
||||||
|
|||||||
@@ -1,26 +1,18 @@
|
|||||||
---
|
---
|
||||||
import {
|
|
||||||
GebaeudeStammdaten,
|
|
||||||
VerbrauchsausweisWohnen,
|
|
||||||
prisma,
|
|
||||||
} from "@ibcornelsen/database/server";
|
|
||||||
import { generate } from "@pdfme/generator";
|
import { generate } from "@pdfme/generator";
|
||||||
|
|
||||||
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
||||||
import { convertAusweisData } from "#lib/AusweisData";
|
import { convertAusweisData } from "#lib/AusweisData";
|
||||||
import { variable } from "#lib/pdf/plugins/variables";
|
import { variable } from "#lib/pdf/plugins/variables";
|
||||||
import { text, image } from "@pdfme/schemas"
|
import { text, image } from "@pdfme/schemas"
|
||||||
|
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
|
import { createCaller } from "#lib/caller";
|
||||||
|
|
||||||
const base64 = Astro.url.searchParams.get("base64");
|
const base64 = Astro.url.searchParams.get("base64");
|
||||||
let ausweis:
|
let ausweis: VerbrauchsausweisWohnenClient | null = null;
|
||||||
| (Partial<VerbrauchsausweisWohnen> & {
|
|
||||||
gebaeude_stammdaten: Partial<GebaeudeStammdaten>;
|
|
||||||
})
|
|
||||||
| null = null;
|
|
||||||
if (base64) {
|
if (base64) {
|
||||||
const buffer = Buffer.from(base64, "base64");
|
const buffer = Buffer.from(base64, "base64");
|
||||||
const json = buffer.toString("utf-8");
|
const json = buffer.toString("utf-8");
|
||||||
ausweis = JSON.parse(json);
|
ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
|
||||||
} else {
|
} else {
|
||||||
const uidAusweis = Astro.url.searchParams.get("ausweis_uid");
|
const uidAusweis = Astro.url.searchParams.get("ausweis_uid");
|
||||||
|
|
||||||
@@ -28,14 +20,11 @@ if (base64) {
|
|||||||
return Astro.redirect("/404");
|
return Astro.redirect("/404");
|
||||||
}
|
}
|
||||||
|
|
||||||
ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const caller = createCaller(Astro);
|
||||||
where: {
|
|
||||||
uid: uidAusweis,
|
ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||||
},
|
uid: uidAusweis
|
||||||
include: {
|
})
|
||||||
gebaeude_stammdaten: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ausweis) {
|
if (!ausweis) {
|
||||||
|
|||||||
Reference in New Issue
Block a user