Ausweis ohne Nutzer Referenz speichern
This commit is contained in:
@@ -5,9 +5,7 @@ import {
|
||||
UploadedGebaeudeBild,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "#components/Ausweis/types";
|
||||
import { dialogs } from "svelte-dialogs";
|
||||
import { validateAccessTokenClient } from "./validateAccessToken";
|
||||
import LoginDialog from "#components/LoginDialog.svelte";
|
||||
|
||||
import { exclude } from "#lib/exclude";
|
||||
import { client } from "src/trpc";
|
||||
import { bilderHochladen } from "./bilderHochladen";
|
||||
@@ -20,48 +18,28 @@ export async function verbrauchsausweisWohnenSpeichern(
|
||||
images: (UploadedGebaeudeBild & { base64?: string })[],
|
||||
user: BenutzerClient
|
||||
) {
|
||||
// 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 (!(await validateAccessTokenClient())) {
|
||||
// TOOD: Auf Dialog umstellen.
|
||||
const loggedIn = await dialogs.modal(LoginDialog);
|
||||
|
||||
if (!loggedIn) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ausweis.uid) {
|
||||
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
|
||||
// Jetzt müssen wir ihn nun nur noch abspeichern.
|
||||
try {
|
||||
const gebaeudeBilderEntfernt = exclude(gebaeude, [
|
||||
"gebaeude_bilder",
|
||||
]);
|
||||
const gebaeudeAufnahmeGeneratedFieldsEntfernt = exclude(
|
||||
gebaeude_aufnahme_allgemein,
|
||||
["erstellungsdatum", "events"]
|
||||
);
|
||||
const ausweisGeneratedFieldsEntfernt = exclude(ausweis, [
|
||||
"rechnungen",
|
||||
"erstellungsdatum",
|
||||
]);
|
||||
|
||||
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
|
||||
...ausweisGeneratedFieldsEntfernt,
|
||||
...ausweis,
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
...gebaeudeAufnahmeGeneratedFieldsEntfernt,
|
||||
...exclude(
|
||||
gebaeude_aufnahme_allgemein,
|
||||
["erstellungsdatum", "events", "ausstellungsdatum", "rechnungen"]
|
||||
),
|
||||
gebaeude_stammdaten: {
|
||||
...gebaeudeBilderEntfernt,
|
||||
...exclude(gebaeude, [
|
||||
"gebaeude_bilder",
|
||||
]),
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
console.log(ausweisGeneratedFieldsEntfernt);
|
||||
|
||||
images = await bilderHochladen(images, gebaeude);
|
||||
|
||||
return true;
|
||||
return { uid: ausweis.uid, gebaeude_uid: gebaeude.uid, gebaeude_aufnahme_uid: gebaeude_aufnahme_allgemein.uid };
|
||||
} catch (e) {
|
||||
// TODO: Ticket mit Fehldermeldung abschicken.
|
||||
}
|
||||
@@ -78,13 +56,10 @@ export async function verbrauchsausweisWohnenSpeichern(
|
||||
},
|
||||
},
|
||||
});
|
||||
ausweis.uid = response.uid;
|
||||
gebaeude.uid = response.gebaeude_uid;
|
||||
gebaeude_aufnahme_allgemein.uid = response.gebaeude_aufnahme_uid;
|
||||
|
||||
images = await bilderHochladen(images, gebaeude);
|
||||
|
||||
return true;
|
||||
return response;
|
||||
} catch (e: any) {
|
||||
await client.v1.tickets.erstellen.mutate({
|
||||
titel: "Ausweis konnte nicht gespeichert werden",
|
||||
@@ -107,5 +82,5 @@ export async function verbrauchsausweisWohnenSpeichern(
|
||||
timeout: 6000,
|
||||
type: "error",
|
||||
});
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -38,8 +38,13 @@
|
||||
async function spaeterWeitermachen() {
|
||||
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
|
||||
|
||||
if (result === true) {
|
||||
window.history.pushState({}, "", `${location.pathname}?uid=${ausweis.uid}`);
|
||||
if (result !== null) {
|
||||
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
|
||||
// Sonst müsste er alles neu eingeben...
|
||||
ausweis.uid = result.uid
|
||||
gebaeude.uid = result.gebaeude_uid
|
||||
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
|
||||
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
|
||||
speichernOverlayHidden = false;
|
||||
}
|
||||
}
|
||||
@@ -74,11 +79,14 @@
|
||||
if (e && e.preventDefault) e.preventDefault();
|
||||
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
|
||||
|
||||
if (result === true) {
|
||||
if (result !== null) {
|
||||
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
|
||||
// Sonst müsste er alles neu eingeben...
|
||||
window.history.pushState({}, "", `${location.pathname}?uid=${ausweis.uid}`);
|
||||
window.location.href = `/kundendaten?uid=${ausweis.uid}`;
|
||||
ausweis.uid = result.uid
|
||||
gebaeude.uid = result.gebaeude_uid
|
||||
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
|
||||
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
|
||||
window.location.href = `/kundendaten?uid=${result.uid}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
Bezahlmethoden,
|
||||
} from "@ibcornelsen/database/client";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import { dialogs } from "svelte-dialogs";
|
||||
import LoginDialog from "#components/LoginDialog.svelte";
|
||||
|
||||
export let user: BenutzerClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||
@@ -40,6 +42,8 @@
|
||||
|
||||
import { PRICES } from "#lib/constants";
|
||||
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { validateAccessTokenClient } from "src/client/lib/validateAccessToken";
|
||||
import { client } from "src/trpc";
|
||||
|
||||
let prices: number[] = []
|
||||
|
||||
@@ -56,12 +60,29 @@
|
||||
0
|
||||
);
|
||||
|
||||
function speichern(e: SubmitEvent) {
|
||||
async function speichern(e: SubmitEvent) {
|
||||
e.preventDefault()
|
||||
console.log("Speichern");
|
||||
|
||||
|
||||
// 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 (!(await validateAccessTokenClient())) {
|
||||
// TOOD: Auf Dialog umstellen.
|
||||
const loggedIn = await dialogs.modal(LoginDialog);
|
||||
|
||||
if (!loggedIn) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Falls der Ausweis noch keine benutzer_id hat müssen wir ihn claimen, damit er dem jetzigen Nutzer zugewiesen wird...
|
||||
await client.v1.verbrauchsausweisWohnen.claim.mutate({
|
||||
uid: ausweis.uid
|
||||
})
|
||||
|
||||
window.location.href = `/kaufabschluss?uid=${ausweis.uid}`;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<div class="w-full px-8">
|
||||
|
||||
@@ -21,7 +21,7 @@ const ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||
const user = await caller.v1.benutzer.self();
|
||||
|
||||
|
||||
if (!ausweis || !user) {
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user