Speichern direkt auf Ausweis

This commit is contained in:
Moritz Utcke
2025-04-21 19:59:30 -03:00
parent f8e890e9a9
commit d9f6b7e825
16 changed files with 95 additions and 85 deletions

View File

@@ -135,7 +135,7 @@
);
blockLocalStorageSync = true;
localStorage.clear()
window.location.href = `/speichern-erfolgreich?id=${ausweis.id}`
window.location.href = `/dashboard/objekte?id=${ausweis.id}`
}
}

View File

@@ -0,0 +1,36 @@
import { BASE_URI } from "#lib/constants.js";
import { transport } from "#lib/mail.js";
import { Benutzer } from "../prisma.js";
export async function sendAusweisGespeichertMail(user: Benutzer, ausweis_id: string) {
await transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email,
subject: `Ihr Ausweis wurde gespeichert - IBCornelsen - (ID: ${ausweis_id})`,
html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.<br><br>
Ihre Vorgänge und Ausweise können Sie in Ihrem Kundenkonto einsehen und bearbeiten:<br><br>
<a href="${BASE_URI}/dashboard">zum Kundenkonto</a><br></p>
<p>
Mit freundlichen Grüßen,
<br>
Dipl.-Ing. Jens Cornelsen
<br>
<br>
<strong>IB Cornelsen</strong>
<br>
Katendeich 5A
<br>
21035 Hamburg
<br>
www.online-energieausweis.org
<br>
<br>
fon 040 · 209339850
<br>
fax 040 · 209339859
</p>`
})
}

View File

@@ -265,7 +265,7 @@
);
localStorage.clear();
window.location.href = `/speichern-erfolgreich?id=${ausweis.id}`
window.location.href = `/dashboard/objekte?id=${ausweis.id}`
}
}

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { BedarfsausweisGewerbeSchema } from "src/generated/zod/bedarfsausweisgewerbe.js";
@@ -47,6 +48,10 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -2,7 +2,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { BedarfsausweisGewerbeSchema } from "src/generated/zod/bedarfsausweisgewerbe.js";
import { z } from "zod";
@@ -65,7 +66,9 @@ export const PUT = defineApiRoute({
}
}
});
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, id)
}
return nachweis.id
},
});

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
@@ -47,6 +48,9 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -5,7 +5,8 @@ import {
authorizationHeaders,
authorizationMiddleware,
} from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
import { z } from "zod";
@@ -72,7 +73,9 @@ export const PUT = defineApiRoute({
},
},
});
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, id)
}
return id;
},
});

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js";
@@ -47,6 +48,9 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -2,7 +2,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js";
import { z } from "zod";
@@ -82,7 +83,9 @@ export const PUT = defineApiRoute({
},
},
});
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, id)
}
return {
id: nachweis.id,
objekt_id: nachweis.aufnahme.objekt.id,

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js";
@@ -47,6 +48,9 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -2,7 +2,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js";
import { z } from "zod";
@@ -82,7 +83,9 @@ export const PUT = defineApiRoute({
},
},
});
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, id)
}
return {
id: nachweis.id,
objekt_id: nachweis.aufnahme.objekt.id,

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { VerbrauchsausweisGewerbeSchema } from "src/generated/zod/verbrauchsausweisgewerbe.js";
@@ -44,6 +45,10 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -2,6 +2,7 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { VerbrauchsausweisGewerbeSchema } from "src/generated/zod/verbrauchsausweisgewerbe.js";
@@ -81,6 +82,9 @@ export const PUT = defineApiRoute({
},
});
await sendAusweisGespeichertMail(user, id)
return {
id: id,
objekt_id: createdAusweis.aufnahme.objekt.id,

View File

@@ -3,6 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { exclude } from "#lib/exclude.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { VerbrauchsausweisWohnenSchema } from "src/generated/zod/verbrauchsausweiswohnen.js";
@@ -45,6 +46,10 @@ export const PATCH = defineApiRoute({
},
data: input
})
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, ctx.params.id as string)
}
},
})

View File

@@ -2,7 +2,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
import { generatePrefixedId } from "#lib/db.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { sendAusweisGespeichertMail } from "#lib/server/mail/speichern-erfolgreich.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { VerbrauchsausweisWohnenSchema } from "src/generated/zod/verbrauchsausweiswohnen.js";
import { z } from "zod";
@@ -85,6 +86,9 @@ export const PUT = defineApiRoute({
},
});
if (user.rolle === Enums.BenutzerRolle.USER) {
await sendAusweisGespeichertMail(user, id)
}
return {
id: createdAusweis.id,
objekt_id: createdAusweis.aufnahme.objekt.id,

View File

@@ -1,73 +0,0 @@
---
import Layout from "#layouts/Layout.astro";
import { BASE_URI } from "#lib/constants";
import { transport } from "#lib/mail";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
import { Enums } from "#lib/server/prisma";
import { getCurrentUser } from "#lib/server/user";
const user = await getCurrentUser(Astro)
const id = Astro.url.searchParams.get("id");
if (!user || !id) {
return Astro.redirect("/")
}
// Wir wollen keine Bestätigungsmail wenn ein Admin speichert.
if (user.rolle === Enums.BenutzerRolle.ADMIN) {
return Astro.redirect("/dashboard")
}
const adapter = getPrismaAusweisAdapter(id || "")
if (!adapter) {
return Astro.redirect("/")
}
const ausweis = await adapter.findUnique({
where: {
id
}
})
if (!ausweis) {
return Astro.redirect("/")
}
transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email,
subject: `Ihr Ausweis wurde gespeichert - IBCornelsen - (ID: ${id})`,
html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.<br><br>
Ihre Vorgänge und Ausweise können Sie in Ihrem Kundenkonto einsehen und bearbeiten:<br><br>
<a href="${BASE_URI}/dashboard">zum Kundenkonto</a><br></p>
<p>
Mit freundlichen Grüßen,
<br>
Dipl.-Ing. Jens Cornelsen
<br>
<br>
<strong>IB Cornelsen</strong>
<br>
Katendeich 5A
<br>
21035 Hamburg
<br>
www.online-energieausweis.org
<br>
<br>
fon 040 · 209339850
<br>
fax 040 · 209339859
</p>`
})
---
<Layout title="Speichern Erfolgreich">
<h1>Ihr Energieausweis wurde gespeichert</h1>
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.</p>
<a href="/dashboard">👉 Jetzt ansehen</a>
</Layout>