Database imports gefixt + Ausweis speichern verbessert

This commit is contained in:
Moritz Utcke
2024-01-13 12:56:54 +07:00
parent 218fea5d62
commit 54b26bdf42
46 changed files with 211 additions and 195 deletions

View File

@@ -14,49 +14,43 @@
import { AuditType, hidden } from "#components/Verbrauchsausweis/audits/hidden";
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt";
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung";
import { Enums, GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
import type { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database/client";
import { Enums } from "@ibcornelsen/database/client"
import { client } from "src/trpc";
import Cookies from "js-cookie";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
import Overlay from "#components/Overlay.svelte";
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
import AusweisGespeichertModule from "./AusweisGespeichertModule.svelte";
import { validateAccessToken } from "#lib/validateAccessToken";
export let uid: string | null = null;
export let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
export let ausweis: VerbrauchsausweisWohnen = {
ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen
} as VerbrauchsausweisWohnen;
export let showLoginPage: boolean = false;
async function spaeterWeitermachen() {
// Um einen Ausweis zu speichern müssen wir eingeloggt sein, andernfalls wird die API den call ablehnen.
// Wir prüfen also ob wir eingeloggt sind und leiten den Nutzer ggf. auf die Login Seite weiter.
if (!Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)) {
if (!await validateAccessToken()) {
loginOverlayHidden = false;
showLoginPage = true;
const getEvent = (event: MessageEvent) => {
if (event.data == "AUTHORIZED") {
spaeterWeitermachen();
window.removeEventListener("message", getEvent)
loginOverlayHidden = true;
}
}
window.addEventListener("message", getEvent)
return
}
loginOverlayHidden = true;
if (uid) {
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
// Jetzt müssen wir ihn nun nur noch abspeichern.
try {
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
...ausweis,
gebaeude_stammdaten: gebaeude,
ausweis,
gebaeude,
uid
})
window.location.href = `/ausweis-gespeichert?uid=${uid}`;
speichernOverlayHidden = false;
window.history.pushState({}, "", `/verbrauchsausweis?uid=${uid}`);
} catch (e) {
addNotification({
dismissable: false,
@@ -69,11 +63,13 @@
} else {
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
try {
const { uid } = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
...ausweis,
gebaeude_stammdaten: gebaeude
const response = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
ausweis,
gebaeude
})
window.location.href = `/ausweis-gespeichert?uid=${uid}`;
uid = response.uid
window.history.pushState({}, "", `/verbrauchsausweis?uid=${uid}`);
speichernOverlayHidden = false;
} catch (e) {
addNotification({
dismissable: false,
@@ -86,21 +82,7 @@
}
}
if (uid) {
// NOTE: Funktioniert nicht mehr
async () => {
const result = await fetch(`/api/verbrauchsausweis?uid=${uid}`, {
method: "GET",
});
const json = await result.json();
if (json.success) {
gebaeude = json.data.gebaeude
ausweis = json.data.ausweis
}
};
}
console.log(gebaeude, ausweis)
function automatischAusfüllen() {
gebaeude.baujahr_gebaeude = [1962];
@@ -139,13 +121,22 @@
let waitOverlayHidden = true;
let loginOverlayHidden = true;
let speichernOverlayHidden = true;
</script>
<Overlay hidden={loginOverlayHidden}>
<iframe src="/auth/embedded-login" frameborder="0" width="600" height="400"></iframe>
<Overlay bind:hidden={loginOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8">
<EmbeddedAuthFlowModule onLogin={spaeterWeitermachen}></EmbeddedAuthFlowModule>
</div>
</Overlay>
<Overlay hidden={waitOverlayHidden}>
<Overlay bind:hidden={speichernOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8 px-8">
<AusweisGespeichertModule {uid}></AusweisGespeichertModule>
</div>
</Overlay>
<Overlay bind:hidden={waitOverlayHidden}>
<p class="text-white font-semibold text-4xl">Bitte warten sie, ihr Ausweis wird nun erstellt.</p>
</Overlay>