@@ -12,8 +12,8 @@ export const createCaller = createCallerFactory({
|
||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
|
||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||
@@ -31,10 +31,10 @@ export const createCaller = createCallerFactory({
|
||||
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
|
||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||
"user": await import("../src/pages/api/user/index.ts"),
|
||||
"user/self": await import("../src/pages/api/user/self.ts"),
|
||||
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
|
||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
|
||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { AufnahmeKomplettClient, BedarfsausweisWohnenClient, getAusweisartFromUUID, ObjektKomplettClient, RechnungClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import { AufnahmeKomplettClient, BedarfsausweisWohnenClient, BenutzerClient, getAusweisartFromUUID, RechnungClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import moment from "moment";
|
||||
import { dialogs } from "svelte-dialogs";
|
||||
import {
|
||||
@@ -13,7 +13,7 @@
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
import Cookies from "js-cookie";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { AusweisTyp, Enums, Objekt } from "#lib/client/prisma.js";
|
||||
import { Enums, Objekt } from "#lib/client/prisma.js";
|
||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
||||
import { shortenUID } from "#server/lib/hash.js";
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
export let aufnahme: AufnahmeKomplettClient;
|
||||
export let rechnung: RechnungClient;
|
||||
export let objekt: Objekt;
|
||||
export let benutzer: BenutzerClient;
|
||||
const progress = ausweis.ausgestellt ? 100 : ausweis.bestellt ? 66 : 33;
|
||||
|
||||
const ausweisart = getAusweisartFromUUID(ausweis.uid);
|
||||
@@ -140,9 +141,9 @@
|
||||
Verbrauchsausweis Gewerbe
|
||||
{/if}
|
||||
|
||||
{#if rechnung.ausweistyp === Enums.AusweisTyp.Beratung}
|
||||
{#if rechnung && rechnung.ausweistyp === Enums.AusweisTyp.Beratung}
|
||||
(Beratung)
|
||||
{:else if rechnung.ausweistyp === Enums.AusweisTyp.Offline}
|
||||
{:else if rechnung && rechnung.ausweistyp === Enums.AusweisTyp.Offline}
|
||||
(Offline)
|
||||
{/if}
|
||||
</div>
|
||||
@@ -251,6 +252,21 @@
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{#if benutzer.rolle === Enums.BenutzerRolle.ADMIN}
|
||||
<!-- TODO -->
|
||||
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
|
||||
<a
|
||||
class="button text-sm"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?uid={ausweis.uid}"
|
||||
>Formular</a>
|
||||
{:else if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
|
||||
<a
|
||||
class="button text-sm"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?uid={ausweis.uid}"
|
||||
>Formular</a>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<a
|
||||
class="p-2 rounded-lg hover:bg-gray-200"
|
||||
title="PDF Herunterladen"
|
||||
|
||||
@@ -125,10 +125,6 @@ describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
cy.get("form[name='signup'] button[type='submit']").click();
|
||||
cy.get("form[name='login'] button[type='submit']").click();
|
||||
|
||||
cy.origin('https://www.mollie.com', () => {
|
||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
||||
})
|
||||
cy.url().should("contain", "/einpreisung/success")
|
||||
});
|
||||
});
|
||||
|
||||
@@ -43,6 +43,6 @@ describe('Benutzer Registrierung', () => {
|
||||
it("meldet einen Nutzer ab und leitet auf die Login Seite weiter", () => {
|
||||
cy.visit("/auth/logout")
|
||||
|
||||
cy.url().should("include", "/auth/login")
|
||||
cy.url().should("include", "/")
|
||||
})
|
||||
})
|
||||
@@ -523,7 +523,9 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||
"Kühlungszuschlag",
|
||||
berechnungen?.primaerfaktorww.toString(),
|
||||
"",
|
||||
// TODO
|
||||
// berechnungen?.primaerfaktorww.toString(),
|
||||
Math.round(berechnungen?.kuehlungsZuschlag_1 || 0).toString(),
|
||||
"0",
|
||||
0,
|
||||
|
||||
@@ -14,7 +14,7 @@ import { PERSISTENT_DIR } from "#lib/server/constants.js";
|
||||
/* -------------------------------- Pdf Tools ------------------------------- */
|
||||
|
||||
export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient) {
|
||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile_form.pdf", import.meta.url), "base64");
|
||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile.pdf", import.meta.url), "base64");
|
||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||
const pages = pdf.getPages()
|
||||
|
||||
@@ -28,26 +28,6 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
const font = await pdf.embedFont(StandardFonts.Helvetica)
|
||||
const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
|
||||
|
||||
const form = pdf.getForm()
|
||||
form.updateFieldAppearances(font)
|
||||
|
||||
const fillFormField = (name: string, value: string, fontSize: number = 8, alignment: TextAlignment = TextAlignment.Left) => {
|
||||
const field = form.getTextField(name)
|
||||
field.setFontSize(fontSize)
|
||||
field.setText(value)
|
||||
field.setAlignment(alignment)
|
||||
}
|
||||
|
||||
const toggleCheck = (name: string, checked: boolean = true) => {
|
||||
const field = form.getCheckBox(name)
|
||||
|
||||
if (checked) {
|
||||
field.check()
|
||||
} else {
|
||||
field.uncheck()
|
||||
}
|
||||
}
|
||||
|
||||
pages[0].drawText(aufnahme.gebaeudetyp || "", {
|
||||
x: 211,
|
||||
y: height - 166,
|
||||
@@ -612,7 +592,5 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
addDatumGEG(page, font)
|
||||
}
|
||||
|
||||
pdf.getForm().flatten()
|
||||
|
||||
return pdf.save();
|
||||
}
|
||||
@@ -44,7 +44,7 @@ export async function sendInvoiceMail(
|
||||
const id = shortenUID(ausweis.uid)
|
||||
|
||||
|
||||
if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||
if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen && rechnung.ausweistyp === Enums.AusweisTyp.Standard) {
|
||||
const ansichtsausweis = await getAnsichtsausweis(
|
||||
ausweis,
|
||||
aufnahme,
|
||||
|
||||
@@ -43,7 +43,7 @@ export async function sendPaymentSuccessMail(
|
||||
|
||||
const id = shortenUID(ausweis.uid)
|
||||
|
||||
if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||
if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen && rechnung.ausweistyp === Enums.AusweisTyp.Standard) {
|
||||
const ansichtsausweis = await getAnsichtsausweis(
|
||||
ausweis,
|
||||
aufnahme,
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
export let user: BenutzerClient;
|
||||
export let aufnahme: AufnahmeKomplettClient;
|
||||
export let objekt: Objekt;
|
||||
export let benutzer: BenutzerClient;
|
||||
|
||||
|
||||
let dropdownOpen = false;
|
||||
@@ -64,13 +65,13 @@
|
||||
|
||||
<div class="my-4 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
||||
{#each aufnahme.verbrauchsausweise_wohnen as ausweis}
|
||||
<DashboardAusweis {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
<DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
{/each}
|
||||
{#each aufnahme.bedarfsausweise_wohnen as ausweis}
|
||||
<DashboardAusweis {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
<DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
{/each}
|
||||
{#each aufnahme.verbrauchsausweise_gewerbe as ausweis}
|
||||
<DashboardAusweis {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
<DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
|
||||
{/each}
|
||||
{#each aufnahme.geg_nachweise_wohnen as nachweis}
|
||||
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
import DashboardObjekt from "#components/Dashboard/DashboardObjekt.svelte";
|
||||
import Overlay from "#components/Overlay.svelte";
|
||||
import PlzSuche from "#components/PlzSuche.svelte";
|
||||
import TagInput from "#components/TagInput.svelte";
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
import NotificationProvider from "#components/NotificationProvider/NotificationProvider.svelte";
|
||||
import NotificationWrapper from "#components/Notifications/NotificationWrapper.svelte";
|
||||
import { addNotification } from "#components/Notifications/shared.js";
|
||||
import Cookies from "js-cookie";
|
||||
|
||||
@@ -58,8 +58,9 @@
|
||||
export let user: BenutzerClient;
|
||||
export let bilder: UploadedGebaeudeBild[];
|
||||
export let ausweistyp: Enums.AusweisTyp;
|
||||
export let uid: string | null;
|
||||
|
||||
if (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at)) {
|
||||
if (!uid && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
||||
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-wohnen.ausweis");
|
||||
if (localStorageAusweis) {
|
||||
ausweis = JSON.parse(localStorageAusweis)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { z } from "zod";
|
||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||
@@ -59,10 +59,10 @@ export const GET = defineApiRoute({
|
||||
const { uid } = ctx.params;
|
||||
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
} : { uid },
|
||||
select: {
|
||||
benutzer_id: true,
|
||||
bilder: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { AufnahmeClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { AufnahmeSchema } from "src/generated/zod/aufnahme.js";
|
||||
import { z } from "zod";
|
||||
@@ -71,10 +71,10 @@ export const GET = defineApiRoute({
|
||||
const { uid } = context.params;
|
||||
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
} : { uid },
|
||||
include: {
|
||||
objekt: {
|
||||
select: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ObjektClient, OptionalNullable, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { ObjektSchema, prisma } from "#lib/server/prisma.js";
|
||||
import { Enums, ObjektSchema, prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -69,10 +69,10 @@ export const GET = defineApiRoute({
|
||||
const { uid } = ctx.params;
|
||||
|
||||
const objekt = await prisma.objekt.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
} : { uid },
|
||||
});
|
||||
|
||||
if (!objekt) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { OptionalNullable, UUidWithPrefix, VerbrauchsausweisGewerbeClient, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.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";
|
||||
import { z } from "zod";
|
||||
@@ -174,10 +174,10 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
|
||||
const ausweis = await prisma.verbrauchsausweisGewerbe.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
} : { uid },
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { OptionalNullable, UUidWithPrefix, VerbrauchsausweisWohnenClient, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.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";
|
||||
@@ -175,10 +175,10 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
|
||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
} : { uid },
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import { createCaller } from "../../../astro-typesafe-api-caller.js";
|
||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { prisma } from "#lib/server/prisma";
|
||||
import { Enums, prisma } from "#lib/server/prisma";
|
||||
import UserLayout from "#layouts/DashboardLayout.astro";
|
||||
import DashboardAufnahmeModule from "#modules/Dashboard/DashboardAufnahmeModule.svelte";
|
||||
|
||||
@@ -26,13 +26,14 @@ if (!user) {
|
||||
return Astro.redirect("/auth/login")
|
||||
}
|
||||
|
||||
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
benutzer: {
|
||||
uid: user.uid
|
||||
},
|
||||
uid
|
||||
},
|
||||
} : { uid },
|
||||
include: {
|
||||
objekt: true,
|
||||
bilder: true,
|
||||
@@ -77,5 +78,5 @@ if (!aufnahme) {
|
||||
---
|
||||
|
||||
<UserLayout title="Dashboard" {user}>
|
||||
<DashboardAufnahmeModule {user} {aufnahme} objekt={aufnahme.objekt} client:only/>
|
||||
<DashboardAufnahmeModule {user} {aufnahme} benutzer={user} objekt={aufnahme.objekt} client:only/>
|
||||
</UserLayout>
|
||||
@@ -3,7 +3,7 @@ import { createCaller } from "../../astro-typesafe-api-caller.js";
|
||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
|
||||
import DashboardModule from "#modules/Dashboard/DashboardModule.svelte";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
|
||||
import { prisma } from "#lib/server/prisma";
|
||||
import { Enums, prisma } from "#lib/server/prisma";
|
||||
import DashboardLayout from "#layouts/DashboardLayout.astro";
|
||||
|
||||
const accessTokenValid = await validateAccessTokenServer(Astro);
|
||||
@@ -25,12 +25,12 @@ if (!user) {
|
||||
}
|
||||
|
||||
const objekte = await prisma.objekt.findMany({
|
||||
where: {
|
||||
where: user.rolle === Enums.BenutzerRolle.USER ? {
|
||||
benutzer: {
|
||||
uid: user.uid
|
||||
}
|
||||
},
|
||||
take: 10,
|
||||
} : {},
|
||||
take: 25,
|
||||
orderBy: {
|
||||
erstellungsdatum: "desc"
|
||||
},
|
||||
|
||||
@@ -107,5 +107,5 @@ if (uid) {
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} />
|
||||
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {uid} {ausweistyp} />
|
||||
</AusweisLayout>
|
||||
|
||||
Reference in New Issue
Block a user