Neue Datenbank eingebunden
This commit is contained in:
@@ -5,7 +5,7 @@ RUN npm i -g pnpm
|
|||||||
|
|
||||||
WORKDIR /online-energieausweis
|
WORKDIR /online-energieausweis
|
||||||
COPY ./package.json ./
|
COPY ./package.json ./
|
||||||
RUN pnpm install --prod
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
RUN pnpm install --prod
|
||||||
|
|
||||||
CMD ["pnpm", "run", "build:production"]
|
CMD ["pnpm", "run", "build:production"]
|
||||||
@@ -5,10 +5,10 @@ services:
|
|||||||
container_name: online-energieausweis
|
container_name: online-energieausweis
|
||||||
command: pnpm run dev --host
|
command: pnpm run dev --host
|
||||||
links:
|
links:
|
||||||
- db:database
|
- db
|
||||||
environment:
|
environment:
|
||||||
PORT: 3000
|
PORT: 3000
|
||||||
DB_CONNECTION: database
|
DB_CONNECTION: "db"
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
NODE_ENV: "development"
|
NODE_ENV: "development"
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<hr class="trenner_form_100" />
|
<hr class="trenner_form_100" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ImageGrid max={1} bind:images />
|
<ImageGrid max={1} bind:images bind:ausweis />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
|
||||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
import { Gebaeude } from "src/lib/Gebaeude";
|
||||||
import HelpLabel from "~/components/HelpLabel.svelte";
|
import HelpLabel from "~/components/HelpLabel.svelte";
|
||||||
|
|
||||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
export let gebaeude: Gebaeude;
|
||||||
|
|
||||||
|
$: ausweis = gebaeude.ausweis || new Verbrauchsausweis();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="GRB">
|
<div class="GRB">
|
||||||
@@ -96,7 +97,7 @@
|
|||||||
type="number"
|
type="number"
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
bind:value={ausweis.baujahr_gebaeude}
|
bind:value={gebaeude.baujahr}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,12 +113,12 @@
|
|||||||
<input
|
<input
|
||||||
id="IGanzahl"
|
id="IGanzahl"
|
||||||
name="IGanzahl"
|
name="IGanzahl"
|
||||||
class="form-control input-md zahlen"
|
class=" "
|
||||||
type="text"
|
type="text"
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
data-msg="Pflichtfeld"
|
data-msg="Pflichtfeld"
|
||||||
bind:value={ausweis.anzahl_einheiten}
|
bind:value={gebaeude.einheiten}
|
||||||
maxlength="3"
|
maxlength="3"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -137,9 +138,9 @@
|
|||||||
<select
|
<select
|
||||||
id="IGsan"
|
id="IGsan"
|
||||||
name="IGsan"
|
name="IGsan"
|
||||||
class="form-control"
|
class=""
|
||||||
required
|
required
|
||||||
bind:value={ausweis.objekt_saniert}
|
bind:value={gebaeude.saniert}
|
||||||
>
|
>
|
||||||
<option disabled>Bitte auswählen</option>
|
<option disabled>Bitte auswählen</option>
|
||||||
<option value={true}
|
<option value={true}
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
|
||||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
|
||||||
import HelpLabel from "../HelpLabel.svelte";
|
import HelpLabel from "../HelpLabel.svelte";
|
||||||
import HeizungImage from "./HeizungImage.svelte";
|
import HeizungImage from "./HeizungImage.svelte";
|
||||||
import AusweisPreviewContainer from "./AusweisPreviewContainer.svelte";
|
import AusweisPreviewContainer from "./AusweisPreviewContainer.svelte";
|
||||||
import DaemmungImage from "./DaemmungImage.svelte";
|
import DaemmungImage from "./DaemmungImage.svelte";
|
||||||
import FensterImage from "./FensterImage.svelte";
|
import FensterImage from "./FensterImage.svelte";
|
||||||
import Label from "../Label.svelte";
|
import Label from "../Label.svelte";
|
||||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
import { Gebaeude } from "src/lib/Gebaeude";
|
||||||
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
|
|
||||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
export let gebaeude: Gebaeude;
|
||||||
|
|
||||||
|
$: ausweis = gebaeude.ausweis || new Verbrauchsausweis()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage1"
|
name="IGheizungsanlage1"
|
||||||
bind:checked={ausweis.versorgungssysteme[0]}
|
bind:checked={gebaeude.versorgungssysteme[0]}
|
||||||
value="ZH"
|
value="ZH"
|
||||||
/>Zentral/Etage</label
|
/>Zentral/Etage</label
|
||||||
>
|
>
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage2"
|
name="IGheizungsanlage2"
|
||||||
bind:checked={ausweis.versorgungssysteme[1]}
|
bind:checked={gebaeude.versorgungssysteme[1]}
|
||||||
value="EO"
|
value="EO"
|
||||||
/>Einzelöfen</label
|
/>Einzelöfen</label
|
||||||
>
|
>
|
||||||
@@ -49,7 +50,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage3"
|
name="IGheizungsanlage3"
|
||||||
bind:checked={ausweis.versorgungssysteme[2]}
|
bind:checked={gebaeude.versorgungssysteme[2]}
|
||||||
value="DH"
|
value="DH"
|
||||||
/>Durchlauferhitzer</label
|
/>Durchlauferhitzer</label
|
||||||
>
|
>
|
||||||
@@ -59,7 +60,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage4"
|
name="IGheizungsanlage4"
|
||||||
bind:checked={ausweis.versorgungssysteme[3]}
|
bind:checked={gebaeude.versorgungssysteme[3]}
|
||||||
value="SK"
|
value="SK"
|
||||||
/>Standardkessel</label
|
/>Standardkessel</label
|
||||||
>
|
>
|
||||||
@@ -69,7 +70,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage5"
|
name="IGheizungsanlage5"
|
||||||
bind:checked={ausweis.versorgungssysteme[4]}
|
bind:checked={gebaeude.versorgungssysteme[4]}
|
||||||
value="SSWW"
|
value="SSWW"
|
||||||
/>Solarsystem für Warmwasser</label
|
/>Solarsystem für Warmwasser</label
|
||||||
>
|
>
|
||||||
@@ -79,7 +80,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage6"
|
name="IGheizungsanlage6"
|
||||||
bind:checked={ausweis.versorgungssysteme[5]}
|
bind:checked={gebaeude.versorgungssysteme[5]}
|
||||||
value="WP"
|
value="WP"
|
||||||
/>Wärmepumpe</label
|
/>Wärmepumpe</label
|
||||||
>
|
>
|
||||||
@@ -89,7 +90,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage7"
|
name="IGheizungsanlage7"
|
||||||
bind:checked={ausweis.versorgungssysteme[6]}
|
bind:checked={gebaeude.versorgungssysteme[6]}
|
||||||
value="NK"
|
value="NK"
|
||||||
/>Niedertemperaturkessel</label
|
/>Niedertemperaturkessel</label
|
||||||
>
|
>
|
||||||
@@ -99,7 +100,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage8"
|
name="IGheizungsanlage8"
|
||||||
bind:checked={ausweis.versorgungssysteme[7]}
|
bind:checked={gebaeude.versorgungssysteme[7]}
|
||||||
value="BWK"
|
value="BWK"
|
||||||
/>Brennwertkessel</label
|
/>Brennwertkessel</label
|
||||||
>
|
>
|
||||||
@@ -109,7 +110,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage9"
|
name="IGheizungsanlage9"
|
||||||
bind:checked={ausweis.versorgungssysteme[8]}
|
bind:checked={gebaeude.versorgungssysteme[8]}
|
||||||
value="WRGD"
|
value="WRGD"
|
||||||
/>Warmwasserrohre gedämmt</label
|
/>Warmwasserrohre gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -119,7 +120,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage10"
|
name="IGheizungsanlage10"
|
||||||
bind:checked={ausweis.versorgungssysteme[9]}
|
bind:checked={gebaeude.versorgungssysteme[9]}
|
||||||
value="HRGD"
|
value="HRGD"
|
||||||
/>Heizungsrohre gedämmt</label
|
/>Heizungsrohre gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -129,7 +130,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage11"
|
name="IGheizungsanlage11"
|
||||||
bind:checked={ausweis.versorgungssysteme[10]}
|
bind:checked={gebaeude.versorgungssysteme[10]}
|
||||||
value="ZK"
|
value="ZK"
|
||||||
/>Zirkulation</label
|
/>Zirkulation</label
|
||||||
>
|
>
|
||||||
@@ -139,7 +140,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGheizungsanlage12"
|
name="IGheizungsanlage12"
|
||||||
bind:checked={ausweis.versorgungssysteme[11]}
|
bind:checked={gebaeude.versorgungssysteme[11]}
|
||||||
value="RTR"
|
value="RTR"
|
||||||
/>Raumtemperaturregler</label
|
/>Raumtemperaturregler</label
|
||||||
>
|
>
|
||||||
@@ -149,7 +150,7 @@
|
|||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<HeizungImage />
|
<HeizungImage bind:ausweis />
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
@@ -168,7 +169,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach1"
|
name="IGfensterdach1"
|
||||||
bind:checked={ausweis.fenster_dach[0]}
|
bind:checked={gebaeude.fenster_dach[0]}
|
||||||
value="EG"
|
value="EG"
|
||||||
/>Einfachglas</label
|
/>Einfachglas</label
|
||||||
>
|
>
|
||||||
@@ -178,7 +179,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach2"
|
name="IGfensterdach2"
|
||||||
bind:checked={ausweis.fenster_dach[1]}
|
bind:checked={gebaeude.fenster_dach[1]}
|
||||||
value="DF"
|
value="DF"
|
||||||
/>Doppelverglasung</label
|
/>Doppelverglasung</label
|
||||||
>
|
>
|
||||||
@@ -188,7 +189,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach3"
|
name="IGfensterdach3"
|
||||||
bind:checked={ausweis.fenster_dach[2]}
|
bind:checked={gebaeude.fenster_dach[2]}
|
||||||
value="IVG"
|
value="IVG"
|
||||||
/>Isolierverglasung</label
|
/>Isolierverglasung</label
|
||||||
>
|
>
|
||||||
@@ -198,7 +199,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach4"
|
name="IGfensterdach4"
|
||||||
bind:checked={ausweis.fenster_dach[3]}
|
bind:checked={gebaeude.fenster_dach[3]}
|
||||||
value="PHF"
|
value="PHF"
|
||||||
/>Dreifachverglasung</label
|
/>Dreifachverglasung</label
|
||||||
>
|
>
|
||||||
@@ -208,7 +209,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach5"
|
name="IGfensterdach5"
|
||||||
bind:checked={ausweis.fenster_dach[4]}
|
bind:checked={gebaeude.fenster_dach[4]}
|
||||||
value="FD"
|
value="FD"
|
||||||
/>Alle Fenster dicht</label
|
/>Alle Fenster dicht</label
|
||||||
>
|
>
|
||||||
@@ -218,7 +219,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach6"
|
name="IGfensterdach6"
|
||||||
bind:checked={ausweis.fenster_dach[5]}
|
bind:checked={gebaeude.fenster_dach[5]}
|
||||||
value="FTUD"
|
value="FTUD"
|
||||||
/>Fenster teilweise undicht</label
|
/>Fenster teilweise undicht</label
|
||||||
>
|
>
|
||||||
@@ -228,7 +229,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach7"
|
name="IGfensterdach7"
|
||||||
bind:checked={ausweis.fenster_dach[6]}
|
bind:checked={gebaeude.fenster_dach[6]}
|
||||||
value="TD"
|
value="TD"
|
||||||
/>Alle Türen dicht</label
|
/>Alle Türen dicht</label
|
||||||
>
|
>
|
||||||
@@ -238,7 +239,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach8"
|
name="IGfensterdach8"
|
||||||
bind:checked={ausweis.fenster_dach[7]}
|
bind:checked={gebaeude.fenster_dach[7]}
|
||||||
value="TUD"
|
value="TUD"
|
||||||
/>Türen teilweise undicht</label
|
/>Türen teilweise undicht</label
|
||||||
>
|
>
|
||||||
@@ -248,7 +249,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGfensterdach9"
|
name="IGfensterdach9"
|
||||||
bind:checked={ausweis.fenster_dach[8]}
|
bind:checked={gebaeude.fenster_dach[8]}
|
||||||
value="RKD"
|
value="RKD"
|
||||||
/>Rollladenkästen gedämmt, luftdicht</label
|
/>Rollladenkästen gedämmt, luftdicht</label
|
||||||
>
|
>
|
||||||
@@ -258,7 +259,7 @@
|
|||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<FensterImage />
|
<FensterImage bind:ausweis />
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
@@ -280,7 +281,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung1"
|
name="IGwaermedaemmung1"
|
||||||
bind:checked={ausweis.daemmung[0]}
|
bind:checked={gebaeude.daemmung[0]}
|
||||||
value="AWD"
|
value="AWD"
|
||||||
/>Außenwand gedämmt</label
|
/>Außenwand gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -290,7 +291,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung2"
|
name="IGwaermedaemmung2"
|
||||||
bind:checked={ausweis.daemmung[1]}
|
bind:checked={gebaeude.daemmung[1]}
|
||||||
value="KWD"
|
value="KWD"
|
||||||
/>Kelleraußenwand gedämmt</label
|
/>Kelleraußenwand gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -300,7 +301,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung3"
|
name="IGwaermedaemmung3"
|
||||||
bind:checked={ausweis.daemmung[2]}
|
bind:checked={gebaeude.daemmung[2]}
|
||||||
value="KDD"
|
value="KDD"
|
||||||
/>Kellerdecke gedämmt</label
|
/>Kellerdecke gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -310,7 +311,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung4"
|
name="IGwaermedaemmung4"
|
||||||
bind:checked={ausweis.daemmung[3]}
|
bind:checked={gebaeude.daemmung[3]}
|
||||||
value="DGD"
|
value="DGD"
|
||||||
/>Dachgeschoss gedämmt</label
|
/>Dachgeschoss gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -320,7 +321,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung5"
|
name="IGwaermedaemmung5"
|
||||||
bind:checked={ausweis.daemmung[4]}
|
bind:checked={gebaeude.daemmung[4]}
|
||||||
value="OGDDW"
|
value="OGDDW"
|
||||||
/>Oberste Geschossdecke gedämmt</label
|
/>Oberste Geschossdecke gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -330,7 +331,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGwaermedaemmung6"
|
name="IGwaermedaemmung6"
|
||||||
bind:checked={ausweis.daemmung[5]}
|
bind:checked={gebaeude.daemmung[5]}
|
||||||
value="OGDD"
|
value="OGDD"
|
||||||
/>Oberste Geschossdecke min. 12cm gedämmt</label
|
/>Oberste Geschossdecke min. 12cm gedämmt</label
|
||||||
>
|
>
|
||||||
@@ -340,7 +341,7 @@
|
|||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<DaemmungImage />
|
<DaemmungImage bind:ausweis />
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
import ImageGrid from "../ImageGrid.svelte";;
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
|
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||||
|
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
let images: (File & { data: string })[] = [];
|
let images: (File & { data: string })[] = [];
|
||||||
|
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
@@ -54,6 +58,6 @@
|
|||||||
Energieausweis!<br />
|
Energieausweis!<br />
|
||||||
<strong>Bitte laden Sie hier mind. 2 Bilder hoch:</strong>
|
<strong>Bitte laden Sie hier mind. 2 Bilder hoch:</strong>
|
||||||
</p>
|
</p>
|
||||||
<ImageGrid max={4} bind:images></ImageGrid>
|
<ImageGrid max={4} bind:images bind:ausweis></ImageGrid>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ImageGrid from "../ImageGrid.svelte";
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
|
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||||
|
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
let images: (File & { data: string })[] = [];
|
let images: (File & { data: string })[] = [];
|
||||||
|
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
@@ -51,6 +55,6 @@
|
|||||||
Energieausweis!<br />
|
Energieausweis!<br />
|
||||||
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
|
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
|
||||||
</p>
|
</p>
|
||||||
<ImageGrid max={4} bind:images></ImageGrid>
|
<ImageGrid max={4} bind:images bind:ausweis></ImageGrid>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ImageGrid from "../ImageGrid.svelte";
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
|
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||||
|
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
let images: (File & { data: string })[] = [];
|
let images: (File & { data: string })[] = [];
|
||||||
|
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
@@ -57,6 +62,6 @@
|
|||||||
Ihrem Energieausweis!<br />
|
Ihrem Energieausweis!<br />
|
||||||
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
|
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
|
||||||
</p>
|
</p>
|
||||||
<ImageGrid max={4} bind:images />
|
<ImageGrid max={4} bind:images bind:ausweis />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<label>Anrede *</label>
|
<label>Anrede *</label>
|
||||||
<div>
|
<div>
|
||||||
<select name="Aanrede" class="form-control">
|
<select name="Aanrede" class="">
|
||||||
<option>bitte auswählen</option>
|
<option>bitte auswählen</option>
|
||||||
<option value="Herr">Herr</option>
|
<option value="Herr">Herr</option>
|
||||||
<option value="Frau">Frau</option>
|
<option value="Frau">Frau</option>
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
<label>Telefon</label>
|
<label>Telefon</label>
|
||||||
<input
|
<input
|
||||||
name="Atelefon"
|
name="Atelefon"
|
||||||
class="zahlen"
|
class=""
|
||||||
type="text"
|
type="text"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
<label>Telefon</label>
|
<label>Telefon</label>
|
||||||
<input
|
<input
|
||||||
name="Rtelefon"
|
name="Rtelefon"
|
||||||
class="zahlen"
|
class=""
|
||||||
type="text"
|
type="text"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -205,7 +205,7 @@
|
|||||||
<div class="column">
|
<div class="column">
|
||||||
<span>bis</span>
|
<span>bis</span>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class=""
|
||||||
value={moment(ausweis.energieverbrauch_zeitraum)
|
value={moment(ausweis.energieverbrauch_zeitraum)
|
||||||
.add("1", "year")
|
.add("1", "year")
|
||||||
.format("MM.Y")}
|
.format("MM.Y")}
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
<div class="column">
|
<div class="column">
|
||||||
<span>bis</span>
|
<span>bis</span>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class=""
|
||||||
value={moment(ausweis.energieverbrauch_zeitraum)
|
value={moment(ausweis.energieverbrauch_zeitraum)
|
||||||
.add("2", "years")
|
.add("2", "years")
|
||||||
.format("MM.Y")}
|
.format("MM.Y")}
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
<div class="column">
|
<div class="column">
|
||||||
<span>bis</span>
|
<span>bis</span>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class=""
|
||||||
value={moment(ausweis.energieverbrauch_zeitraum)
|
value={moment(ausweis.energieverbrauch_zeitraum)
|
||||||
.add("3", "years")
|
.add("3", "years")
|
||||||
.format("MM.Y")}
|
.format("MM.Y")}
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
import UploadImages from "./UploadImages.svelte";
|
import UploadImages from "./UploadImages.svelte";
|
||||||
|
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||||
|
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
export let images: (File & { data: string })[] = [];
|
export let images: (File & { data: string })[] = [];
|
||||||
export let max: number = 4;
|
export let max: number = 4;
|
||||||
|
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-col gap-4">
|
<div class="flex flex-col gap-4">
|
||||||
<UploadImages {max} bind:images />
|
<UploadImages {max} bind:images bind:ausweis />
|
||||||
<div class="grid grid-cols-2 gap-2">
|
<div class="grid grid-cols-2 gap-2">
|
||||||
{#each images as image, i}
|
{#each images as image, i}
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||||
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
|
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
export let max: number = 2;
|
export let max: number = 2;
|
||||||
|
|
||||||
// Array of base64 encoded images read into the input.
|
// Array of base64 encoded images read into the input.
|
||||||
export let images: (File & { data: string })[] = [];
|
export let images: (File & { data: string })[] = [];
|
||||||
|
export let ausweis: Verbrauchsausweis | VerbrauchsausweisGewerbe | Bedarfsausweis;
|
||||||
|
|
||||||
function getAllImages(this: HTMLInputElement) {
|
function getAllImages(this: HTMLInputElement) {
|
||||||
const files = this.files || [];
|
const files = this.files || [];
|
||||||
@@ -15,9 +20,6 @@
|
|||||||
for (let i = 0; i < files.length; i++) {
|
for (let i = 0; i < files.length; i++) {
|
||||||
const file = files[i];
|
const file = files[i];
|
||||||
|
|
||||||
console.log(file.type);
|
|
||||||
|
|
||||||
|
|
||||||
if ((file.type !== "image/jpeg") && (file.type !== "image/png")) {
|
if ((file.type !== "image/jpeg") && (file.type !== "image/png")) {
|
||||||
i--;
|
i--;
|
||||||
continue;
|
continue;
|
||||||
@@ -55,17 +57,28 @@
|
|||||||
ctx.drawImage(image, 0, 0, image.naturalWidth, image.naturalHeight);
|
ctx.drawImage(image, 0, 0, image.naturalWidth, image.naturalHeight);
|
||||||
|
|
||||||
// Get the scaled-down data from the canvas in the desired output format and quality
|
// Get the scaled-down data from the canvas in the desired output format and quality
|
||||||
const dataURL = canvas.toDataURL("image/jpeg", 0.75);
|
const dataURL = canvas.toDataURL("image/jpeg", 0.8);
|
||||||
|
|
||||||
|
|
||||||
images.push({ ...file, data: dataURL as string } as (File & { data: string }));
|
|
||||||
fetch("/api/image", {
|
fetch("/api/image", {
|
||||||
method: "PUT",
|
method: "PUT",
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
data: dataURL,
|
data: dataURL.split(';base64,')[1],
|
||||||
name: file.name
|
name: file.name,
|
||||||
|
kategorie: "",
|
||||||
|
gebaeude_uid: ausweis.gebaeude_uid
|
||||||
})
|
})
|
||||||
|
}).then(response => response.json()).then(json => {
|
||||||
|
if (json.success === false) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
images.push({ ...file, data: dataURL as string } as (File & { data: string }));
|
||||||
|
images = images;
|
||||||
|
|
||||||
|
ausweis.uid = json.data.gebaeude_uid;
|
||||||
})
|
})
|
||||||
images = images;
|
|
||||||
|
|
||||||
if (i == (Math.min(files.length, max) - 1)) {
|
if (i == (Math.min(files.length, max) - 1)) {
|
||||||
this.value = "";
|
this.value = "";
|
||||||
|
|||||||
@@ -10,15 +10,19 @@
|
|||||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import BilderZusatzsysteme from "../Ausweis/BilderZusatzsysteme.svelte";
|
import BilderZusatzsysteme from "../Ausweis/BilderZusatzsysteme.svelte";
|
||||||
|
import { Gebaeude } from "src/lib/Gebaeude";
|
||||||
|
|
||||||
let ausweis = new Verbrauchsausweis();
|
export let gebaeude: Gebaeude;
|
||||||
|
|
||||||
|
|
||||||
|
$: ausweis = gebaeude.ausweis || new Verbrauchsausweis();
|
||||||
|
|
||||||
let needsRequirementCertificate: boolean = false;
|
let needsRequirementCertificate: boolean = false;
|
||||||
|
|
||||||
$: needsRequirementCertificate =
|
$: needsRequirementCertificate =
|
||||||
(ausweis.baujahr_gebaeude < 1978 &&
|
(gebaeude.baujahr < 1978 &&
|
||||||
ausweis.anzahl_einheiten <= 4 &&
|
gebaeude.einheiten <= 4 &&
|
||||||
ausweis.objekt_saniert == false &&
|
gebaeude.saniert == false &&
|
||||||
(ausweis.ausstellgrund == "Vermietung" ||
|
(ausweis.ausstellgrund == "Vermietung" ||
|
||||||
ausweis.ausstellgrund == "Sonstiges")) ||
|
ausweis.ausstellgrund == "Sonstiges")) ||
|
||||||
ausweis.ausstellgrund == "Neubau" ||
|
ausweis.ausstellgrund == "Neubau" ||
|
||||||
@@ -26,26 +30,25 @@
|
|||||||
ausweis.ausstellgrund == "Verkauf";
|
ausweis.ausstellgrund == "Verkauf";
|
||||||
|
|
||||||
function automatischAusfüllen() {
|
function automatischAusfüllen() {
|
||||||
ausweis.baujahr_gebaeude = 1962;
|
gebaeude.baujahr = 1962;
|
||||||
ausweis.baujahr_anlage = 1974;
|
ausweis.baujahr_anlage = 1974;
|
||||||
ausweis.objekt_saniert = true;
|
gebaeude.saniert = true;
|
||||||
ausweis.anzahl_einheiten = 1;
|
gebaeude.einheiten = 1;
|
||||||
ausweis.ausstellgrund = "Vermietung";
|
ausweis.ausstellgrund = "Vermietung";
|
||||||
ausweis.energieverbrauch_1_heizquelle_1 = 15000;
|
ausweis.kennwerte.verbrauch_1 = 15000;
|
||||||
ausweis.energieverbrauch_2_heizquelle_1 = 14000;
|
ausweis.kennwerte.verbrauch_2 = 14000;
|
||||||
ausweis.energieverbrauch_3_heizquelle_1 = 16000;
|
ausweis.kennwerte.verbrauch_3 = 16000;
|
||||||
ausweis.wohnflaeche = 152;
|
gebaeude.wohnflaeche = 152;
|
||||||
ausweis.keller_beheizt = true;
|
gebaeude.keller_beheizt = true;
|
||||||
ausweis.energietraeger_1 = "Erdgas H";
|
ausweis.kennwerte.energietraeger_1 = "Erdgas H";
|
||||||
ausweis.energietraeger_einheit_heizquelle_1 = "kWh";
|
ausweis.kennwerte.einheit_1 = "kWh";
|
||||||
ausweis.warmwasser_enthalten = true;
|
ausweis.kennwerte.anteil_warmwasser_1 = 18;
|
||||||
ausweis.anteil_warmwasser_1 = 18;
|
ausweis.kennwerte.zeitraum = moment("12.01.2019");
|
||||||
ausweis.energieverbrauch_zeitraum = moment("12.01.2019");
|
gebaeude.plz = "21039";
|
||||||
ausweis.objekt_plz = "21039";
|
gebaeude.ort = "Hamburg";
|
||||||
ausweis.objekt_ort = "Hamburg";
|
gebaeude.strasse = "Curslacker Deich 170";
|
||||||
ausweis.objekt_strasse = "Curslacker Deich 170";
|
gebaeude.gebaeudeteil = "Gesamtgebäude";
|
||||||
ausweis.objekt_gebaeudeteil = "Gesamtgebäude"
|
//ausweis.upload();
|
||||||
ausweis.upload();
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -78,7 +81,7 @@
|
|||||||
|
|
||||||
<Label>A - Prüfung der Ausweisart</Label>
|
<Label>A - Prüfung der Ausweisart</Label>
|
||||||
|
|
||||||
<Ausweisart bind:ausweis />
|
<Ausweisart bind:gebaeude />
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="flex flex-col p-4"
|
class="flex flex-col p-4"
|
||||||
@@ -119,13 +122,13 @@
|
|||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
name="IGstrasse"
|
name="IGstrasse"
|
||||||
class="input-md strasse"
|
class=" strasse"
|
||||||
type="text"
|
type="text"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
required
|
required
|
||||||
data-msg-minlength="min. 5 Zeichen"
|
data-msg-minlength="min. 5 Zeichen"
|
||||||
data-msg-maxlength="max. 40 Zeichen"
|
data-msg-maxlength="max. 40 Zeichen"
|
||||||
bind:value={ausweis.objekt_strasse}
|
bind:value={gebaeude.strasse}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -133,8 +136,8 @@
|
|||||||
<!-- PLZ -->
|
<!-- PLZ -->
|
||||||
<div class="form-group col-md-4 PLZ">
|
<div class="form-group col-md-4 PLZ">
|
||||||
<ZipSearch
|
<ZipSearch
|
||||||
bind:zip={ausweis.objekt_plz}
|
bind:zip={gebaeude.plz}
|
||||||
bind:city={ausweis.objekt_ort}
|
bind:city={gebaeude.ort}
|
||||||
name="zip"
|
name="zip"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -147,9 +150,8 @@
|
|||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
name="IGort"
|
name="IGort"
|
||||||
class="input-md buchstaben"
|
|
||||||
readonly={true}
|
readonly={true}
|
||||||
bind:value={ausweis.objekt_ort}
|
bind:value={gebaeude.ort}
|
||||||
type="text"
|
type="text"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -171,7 +173,7 @@
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
data-rule-minlength="2"
|
data-rule-minlength="2"
|
||||||
data-msg-minlength="min. 2 Zeichen"
|
data-msg-minlength="min. 2 Zeichen"
|
||||||
bind:value={ausweis.wohnflaeche}
|
bind:value={gebaeude.wohnflaeche}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -183,7 +185,7 @@
|
|||||||
<select
|
<select
|
||||||
name="IGkeller"
|
name="IGkeller"
|
||||||
required
|
required
|
||||||
bind:value={ausweis.keller_beheizt}
|
bind:value={gebaeude.keller_beheizt}
|
||||||
>
|
>
|
||||||
<option>Bitte auswählen</option>
|
<option>Bitte auswählen</option>
|
||||||
<option value={false}>nicht vorhanden</option>
|
<option value={false}>nicht vorhanden</option>
|
||||||
@@ -197,7 +199,7 @@
|
|||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<Label>Dachgeschoss *</Label>
|
<Label>Dachgeschoss *</Label>
|
||||||
<div>
|
<div>
|
||||||
<select name="IGdach" class="form-control" required>
|
<select name="IGdach" class="" required>
|
||||||
<option>Bitte auswählen</option>
|
<option>Bitte auswählen</option>
|
||||||
<option value="dnein">nicht vorhanden</option>
|
<option value="dnein">nicht vorhanden</option>
|
||||||
<option value="dub">unbeheizt</option>
|
<option value="dub">unbeheizt</option>
|
||||||
@@ -231,7 +233,7 @@
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
class="IGwwbool"
|
class="IGwwbool"
|
||||||
name="IGwwbool"
|
name="IGwwbool"
|
||||||
bind:checked={ausweis.warmwasser_enthalten}
|
bind:checked={ausweis.kennwerte.warmwasser_enthalten}
|
||||||
/>Warmwasser im Verbrauch enthalten</label
|
/>Warmwasser im Verbrauch enthalten</label
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@@ -248,7 +250,7 @@
|
|||||||
name="IGwarmwasser"
|
name="IGwarmwasser"
|
||||||
maxlength="2"
|
maxlength="2"
|
||||||
type="number"
|
type="number"
|
||||||
bind:value={ausweis.anteil_warmwasser_1}
|
bind:value={ausweis.kennwerte.anteil_warmwasser_1}
|
||||||
disabled={!ausweis.warmwasser_enthalten}
|
disabled={!ausweis.warmwasser_enthalten}
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
@@ -265,8 +267,8 @@
|
|||||||
maxlength="3"
|
maxlength="3"
|
||||||
type="number"
|
type="number"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
bind:value={ausweis.anteil_warmwasser_2}
|
bind:value={ausweis.kennwerte.anteil_warmwasser_2}
|
||||||
disabled={!ausweis.zusaetzliche_heizquelle ||
|
disabled={!ausweis.kennwerte.zusaetzliche_heizquelle ||
|
||||||
!ausweis.warmwasser_enthalten}
|
!ausweis.warmwasser_enthalten}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -285,7 +287,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGversorgungssysteme1"
|
name="IGversorgungssysteme1"
|
||||||
bind:checked={ausweis.energiequelle_2_nutzung[0]}
|
bind:checked={gebaeude.energiequelle_2_nutzung[0]}
|
||||||
value="Heizung"
|
value="Heizung"
|
||||||
/>Heizung</label
|
/>Heizung</label
|
||||||
>
|
>
|
||||||
@@ -293,7 +295,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGversorgungssysteme2"
|
name="IGversorgungssysteme2"
|
||||||
bind:checked={ausweis.energiequelle_2_nutzung[1]}
|
bind:checked={gebaeude.energiequelle_2_nutzung[1]}
|
||||||
value="Warmwasser"
|
value="Warmwasser"
|
||||||
/>Warmwasser</label
|
/>Warmwasser</label
|
||||||
>
|
>
|
||||||
@@ -301,7 +303,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGversorgungssysteme3"
|
name="IGversorgungssysteme3"
|
||||||
bind:checked={ausweis.energiequelle_2_nutzung[2]}
|
bind:checked={gebaeude.energiequelle_2_nutzung[2]}
|
||||||
value="Lüftung"
|
value="Lüftung"
|
||||||
/>Lüftung</label
|
/>Lüftung</label
|
||||||
>
|
>
|
||||||
@@ -309,7 +311,7 @@
|
|||||||
><input
|
><input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="IGversorgungssysteme4"
|
name="IGversorgungssysteme4"
|
||||||
bind:checked={ausweis.energiequelle_2_nutzung[3]}
|
bind:checked={gebaeude.energiequelle_2_nutzung[3]}
|
||||||
value="Kühlung"
|
value="Kühlung"
|
||||||
/>Kühlung</label
|
/>Kühlung</label
|
||||||
>
|
>
|
||||||
@@ -331,12 +333,7 @@
|
|||||||
Bitte wählen Sie hier den Gebäudetyp aus.
|
Bitte wählen Sie hier den Gebäudetyp aus.
|
||||||
</HelpLabel>
|
</HelpLabel>
|
||||||
<div>
|
<div>
|
||||||
<select
|
<select name="IGtyp" class="" required autocomplete="off">
|
||||||
name="IGtyp"
|
|
||||||
class="form-control"
|
|
||||||
required
|
|
||||||
autocomplete="off"
|
|
||||||
>
|
|
||||||
<option>Bitte auswählen</option>
|
<option>Bitte auswählen</option>
|
||||||
<option value="Einfamilienhaus">Einfamilienhaus</option>
|
<option value="Einfamilienhaus">Einfamilienhaus</option>
|
||||||
<option value="Freistehendes Einfamilienhaus"
|
<option value="Freistehendes Einfamilienhaus"
|
||||||
@@ -375,12 +372,7 @@
|
|||||||
'Gewerbe'.
|
'Gewerbe'.
|
||||||
</HelpLabel>
|
</HelpLabel>
|
||||||
<div>
|
<div>
|
||||||
<select
|
<select name="IGteil" class="" required autocomplete="off">
|
||||||
name="IGteil"
|
|
||||||
class="form-control"
|
|
||||||
required
|
|
||||||
autocomplete="off"
|
|
||||||
>
|
|
||||||
<option>Bitte auswählen</option>
|
<option>Bitte auswählen</option>
|
||||||
<option value="Gesamtgebäude">Gesamtgebäude</option>
|
<option value="Gesamtgebäude">Gesamtgebäude</option>
|
||||||
<option value="Wohnen">Wohnen</option>
|
<option value="Wohnen">Wohnen</option>
|
||||||
@@ -397,7 +389,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<select
|
<select
|
||||||
name="IGlueftung"
|
name="IGlueftung"
|
||||||
class="form-control"
|
class=""
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
>
|
>
|
||||||
@@ -423,7 +415,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<select
|
<select
|
||||||
name="IGkuehlung"
|
name="IGkuehlung"
|
||||||
class="form-control"
|
class=""
|
||||||
required
|
required
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
>
|
>
|
||||||
@@ -458,7 +450,7 @@
|
|||||||
>F - Bitte prüfen Sie hier die Angaben zum Sanierungszustand des
|
>F - Bitte prüfen Sie hier die Angaben zum Sanierungszustand des
|
||||||
Gebäudes</Label
|
Gebäudes</Label
|
||||||
>
|
>
|
||||||
<BilderZusatzsysteme {ausweis} />
|
<BilderZusatzsysteme {gebaeude} />
|
||||||
<hr />
|
<hr />
|
||||||
<div class="flex flex-row justify-between">
|
<div class="flex flex-row justify-between">
|
||||||
<Hilfe />
|
<Hilfe />
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
name="IGstrasse"
|
name="IGstrasse"
|
||||||
class="input-md strasse"
|
class=" strasse"
|
||||||
type="text"
|
type="text"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
required
|
required
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
name="IGort"
|
name="IGort"
|
||||||
class="input-md buchstaben"
|
|
||||||
readonly={true}
|
readonly={true}
|
||||||
bind:value={ausweis.objekt_ort}
|
bind:value={ausweis.objekt_ort}
|
||||||
type="text"
|
type="text"
|
||||||
@@ -216,7 +216,7 @@
|
|||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<Label>Dachgeschoss *</Label>
|
<Label>Dachgeschoss *</Label>
|
||||||
<div>
|
<div>
|
||||||
<select name="IGdach" class="form-control" required>
|
<select name="IGdach" class="" required>
|
||||||
<option>Bitte auswählen</option>
|
<option>Bitte auswählen</option>
|
||||||
<option value="dnein">nicht vorhanden</option>
|
<option value="dnein">nicht vorhanden</option>
|
||||||
<option value="dub">unbeheizt</option>
|
<option value="dub">unbeheizt</option>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
<input
|
<input
|
||||||
name={name}
|
name={name}
|
||||||
id={name}
|
id={name}
|
||||||
class="zahlen"
|
class=""
|
||||||
type="number"
|
type="number"
|
||||||
required
|
required
|
||||||
readonly={readonly}
|
readonly={readonly}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Moment } from "moment";
|
import { Bedarfsausweis } from "./Bedarfsausweis";
|
||||||
import { BitChecker } from "../BitChecker";
|
import { Verbrauchsausweis } from "./Verbrauchsausweis";
|
||||||
import { Dachgeschoss } from "./types";
|
import { VerbrauchsausweisGewerbe } from "./VerbrauchsausweisGewerbe";
|
||||||
|
|
||||||
export enum AusweisType {
|
export enum AusweisType {
|
||||||
VERBRAUCHSAUSWEIS,
|
VERBRAUCHSAUSWEIS,
|
||||||
@@ -18,124 +18,25 @@ export type Ausstellgrund =
|
|||||||
|
|
||||||
export type Lueftungskonzept = "Fensterlüftung" | "Schachtlüftung" | "Lüftungsanlage ohne Wärmerückgewinnung" | "Lüftungsanlage mit Wärmerückgewinnung"
|
export type Lueftungskonzept = "Fensterlüftung" | "Schachtlüftung" | "Lüftungsanlage ohne Wärmerückgewinnung" | "Lüftungsanlage mit Wärmerückgewinnung"
|
||||||
|
|
||||||
export interface Ausweis {
|
export type Ausweis = Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||||
ausweisart: Ausweisart;
|
|
||||||
id: number;
|
|
||||||
user_id: number;
|
|
||||||
rechnung_adresse: number;
|
|
||||||
versand_adresse: number;
|
|
||||||
objekt_typ: string;
|
|
||||||
objekt_plz: string;
|
|
||||||
objekt_ort: string;
|
|
||||||
objekt_strasse: string;
|
|
||||||
objekt_gebaeudeteil: string;
|
|
||||||
objekt_saniert: boolean;
|
|
||||||
baujahr_gebaeude: number;
|
|
||||||
baujahr_anlage: number;
|
|
||||||
anzahl_einheiten: number;
|
|
||||||
|
|
||||||
erstellungsdatum: Date;
|
export function getAusweis(ausweisart: Ausweisart, initializer?: Ausweis): Ausweis {
|
||||||
ausstellgrund: Ausstellgrund;
|
let ausweis;
|
||||||
|
|
||||||
energieverbrauch_zeitraum: Moment;
|
if (ausweisart == "VA") {
|
||||||
energieverbrauch_1_heizquelle_1: number;
|
ausweis = new Verbrauchsausweis();
|
||||||
energieverbrauch_2_heizquelle_1: number;
|
} else if (ausweisart == "VANW") {
|
||||||
energieverbrauch_3_heizquelle_1: number;
|
ausweis = new VerbrauchsausweisGewerbe();
|
||||||
energieverbrauch_1_heizquelle_2: number;
|
} else if (ausweisart == "BA") {
|
||||||
energieverbrauch_2_heizquelle_2: number;
|
ausweis = new Bedarfsausweis();
|
||||||
energieverbrauch_3_heizquelle_2: number;
|
} else {
|
||||||
|
throw new Error("Unbekannte Ausweisart.");
|
||||||
|
}
|
||||||
|
|
||||||
energietraeger_einheit_heizquelle_1: string;
|
if (initializer) {
|
||||||
energietraeger_einheit_heizquelle_2: string;
|
ausweis.ausstellgrund = initializer.ausstellgrund;
|
||||||
energietraeger_1: string;
|
ausweis.ausweisart = initializer.ausweisart;
|
||||||
energietraeger_2: string;
|
}
|
||||||
|
|
||||||
anteil_warmwasser_1: number;
|
return ausweis;
|
||||||
anteil_warmwasser_2: number;
|
|
||||||
|
|
||||||
uid: string;
|
|
||||||
|
|
||||||
wohnflaeche: number;
|
|
||||||
keller_beheizt: boolean;
|
|
||||||
dachgeschoss: Dachgeschoss;
|
|
||||||
zusaetzliche_heizquelle: boolean;
|
|
||||||
warmwasser_enthalten: boolean;
|
|
||||||
lueftungskonzept: Lueftungskonzept;
|
|
||||||
wird_gekuehlt: boolean;
|
|
||||||
leerstand: number;
|
|
||||||
images: string[];
|
|
||||||
|
|
||||||
versorgungssysteme: boolean[];
|
|
||||||
fenster_dach: boolean[];
|
|
||||||
energiequelle_2_nutzung: boolean[];
|
|
||||||
daemmung: boolean[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Bedarfsausweis spezifische Eigenschaften
|
|
||||||
*/
|
|
||||||
anzahl_vollgeschosse: number;
|
|
||||||
geschosshoehe: number;
|
|
||||||
anzahl_gauben: number;
|
|
||||||
breite_gauben: number;
|
|
||||||
masse_a: number;
|
|
||||||
masse_b: number;
|
|
||||||
masse_c: number;
|
|
||||||
masse_d: number;
|
|
||||||
masse_e: number;
|
|
||||||
masse_f: number;
|
|
||||||
fensterflaeche_so_sw: number;
|
|
||||||
fensterflaeche_nw_no: number;
|
|
||||||
aussenwandflaeche_unbeheizt: number;
|
|
||||||
dachflaeche: number;
|
|
||||||
dach_u_wert: number;
|
|
||||||
deckenflaeche: number;
|
|
||||||
decke_u_wert: number;
|
|
||||||
aussenwand_flaeche: number;
|
|
||||||
aussenwand_u_wert: number;
|
|
||||||
fussboden_flaeche: number;
|
|
||||||
fussboden_u_wert: number;
|
|
||||||
volumen: number;
|
|
||||||
dicht: boolean;
|
|
||||||
fenster_flaeche_1: number;
|
|
||||||
fenster_art_1: number;
|
|
||||||
fenster_flaeche_2: number;
|
|
||||||
fenster_art_2: number;
|
|
||||||
dachfenster_flaeche: number;
|
|
||||||
dachfenster_art: number;
|
|
||||||
haustuer_flaeche: number;
|
|
||||||
haustuer_art: number;
|
|
||||||
dach_bauart: string;
|
|
||||||
dach_daemmung: number;
|
|
||||||
decke_bauart: string;
|
|
||||||
decke_daemmung: number;
|
|
||||||
aussenwand_bauart: string;
|
|
||||||
aussenwand_daemmung: number;
|
|
||||||
boden_bauart: string;
|
|
||||||
boden_daemmung: number;
|
|
||||||
warmwasser_verteilung: string;
|
|
||||||
warmwasser_speicherung: string;
|
|
||||||
warmwasser_erzeugung: string;
|
|
||||||
heizung_zentral: boolean;
|
|
||||||
heizung_verteilung: string;
|
|
||||||
heizung_speicherung: string;
|
|
||||||
waerme_erzeugung_heizung: string;
|
|
||||||
anteil_zusatzheizung: number;
|
|
||||||
kollektor_flaeche: number;
|
|
||||||
|
|
||||||
// VANW
|
|
||||||
|
|
||||||
vanw_stromverbrauch_enthalten: number;
|
|
||||||
vanw_stromverbrauch_sonstige: string;
|
|
||||||
vanw_strom_1: number;
|
|
||||||
vanw_strom_2: number;
|
|
||||||
vanw_strom_3: number;
|
|
||||||
|
|
||||||
regnummer: string;
|
|
||||||
erledigt: boolean;
|
|
||||||
|
|
||||||
anrede: string;
|
|
||||||
name: string;
|
|
||||||
vorname: string;
|
|
||||||
email: string;
|
|
||||||
telefonnummer: string;
|
|
||||||
}
|
}
|
||||||
@@ -5,8 +5,9 @@ import { BitChecker } from "../BitChecker";
|
|||||||
import { getHeizungswerte } from "../Heizungswerte";
|
import { getHeizungswerte } from "../Heizungswerte";
|
||||||
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
||||||
import { Ausweis } from "./Ausweis";
|
import { Ausweis } from "./Ausweis";
|
||||||
|
import { Energiekennwerte } from "../Energiekennwerte";
|
||||||
|
|
||||||
export class Bedarfsausweis implements Ausweis {
|
export class Bedarfsausweis {
|
||||||
public ausweisart: Ausweisart = "VA";
|
public ausweisart: Ausweisart = "VA";
|
||||||
public id: number = 0;
|
public id: number = 0;
|
||||||
public user_id: number = 0;
|
public user_id: number = 0;
|
||||||
@@ -137,6 +138,9 @@ export class Bedarfsausweis implements Ausweis {
|
|||||||
// Temporär
|
// Temporär
|
||||||
public tabellenwerte_aendern: boolean = false;
|
public tabellenwerte_aendern: boolean = false;
|
||||||
|
|
||||||
|
public gebaeude_uid?: string;
|
||||||
|
public kennwerte: Energiekennwerte = new Energiekennwerte();
|
||||||
|
|
||||||
public constructor() {}
|
public constructor() {}
|
||||||
|
|
||||||
public static fromBase64(base64: string): Bedarfsausweis | null {
|
public static fromBase64(base64: string): Bedarfsausweis | null {
|
||||||
@@ -150,17 +154,15 @@ export class Bedarfsausweis implements Ausweis {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public get primaer_energie_verbrauch(): Promise<number> {
|
public get primaer_energie_verbrauch(): number {
|
||||||
return (async () => {
|
const Endenergieverbrauch = this.end_energie_verbrauch;
|
||||||
const Endenergieverbrauch = await this.end_energie_verbrauch;
|
|
||||||
|
|
||||||
const brennstoff_1 = getHeizwertfaktorClient(
|
const brennstoff_1 = getHeizwertfaktorClient(
|
||||||
this.energietraeger_1,
|
this.energietraeger_1,
|
||||||
this.energietraeger_einheit_heizquelle_1
|
this.energietraeger_einheit_heizquelle_1
|
||||||
);
|
);
|
||||||
|
|
||||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||||
})();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public get end_energie_verbrauch(): number {
|
public get end_energie_verbrauch(): number {
|
||||||
|
|||||||
@@ -1,214 +1,31 @@
|
|||||||
import { Moment } from "moment";
|
|
||||||
import { getKlimafaktorenClient } from "../Klimafaktoren";
|
import { getKlimafaktorenClient } from "../Klimafaktoren";
|
||||||
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
|
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
|
||||||
import moment from "moment";
|
import { Ausstellgrund, Ausweisart } from "./types";
|
||||||
import { BitChecker } from "../BitChecker";
|
import { Energiekennwerte } from "../Energiekennwerte";
|
||||||
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
import { Gebaeude } from "../Gebaeude";
|
||||||
import { Ausweis } from "./Ausweis";
|
|
||||||
|
|
||||||
|
export class Verbrauchsausweis {
|
||||||
export class Verbrauchsausweis implements Ausweis {
|
|
||||||
public ausweisart: Ausweisart = "VA";
|
public ausweisart: Ausweisart = "VA";
|
||||||
public id: number = 0;
|
|
||||||
public user_id: number = 0;
|
|
||||||
public rechnung_adresse: number = 0;
|
|
||||||
public versand_adresse: number = 0;
|
|
||||||
public objekt_typ: string = "";
|
|
||||||
public objekt_plz: string = "";
|
|
||||||
public objekt_ort: string = "";
|
|
||||||
public objekt_strasse: string = "";
|
|
||||||
public objekt_gebaeudeteil: string = "";
|
|
||||||
public objekt_saniert: boolean = false;
|
|
||||||
public baujahr_gebaeude: number = 0;
|
|
||||||
public baujahr_anlage: number = 0;
|
|
||||||
public anzahl_einheiten: number = 0;
|
|
||||||
|
|
||||||
public erstellungsdatum: Date = new Date();
|
|
||||||
public ausstellgrund: Ausstellgrund = "Vermietung";
|
public ausstellgrund: Ausstellgrund = "Vermietung";
|
||||||
|
public warmwasser_enthalten: boolean = true;
|
||||||
|
public id?: number;
|
||||||
|
public uid?: string;
|
||||||
|
public baujahr_anlage: number = 0;
|
||||||
|
|
||||||
public energieverbrauch_zeitraum: Moment = moment();
|
|
||||||
public energieverbrauch_1_heizquelle_1: number = 0;
|
|
||||||
public energieverbrauch_2_heizquelle_1: number = 0;
|
|
||||||
public energieverbrauch_3_heizquelle_1: number = 0;
|
|
||||||
public energieverbrauch_1_heizquelle_2: number = 0;
|
|
||||||
public energieverbrauch_2_heizquelle_2: number = 0;
|
|
||||||
public energieverbrauch_3_heizquelle_2: number = 0;
|
|
||||||
|
|
||||||
public energietraeger_einheit_heizquelle_1: string = "";
|
|
||||||
public energietraeger_einheit_heizquelle_2: string = "";
|
|
||||||
public energietraeger_1: string = "";
|
|
||||||
public energietraeger_2: string = "";
|
|
||||||
|
|
||||||
public anteil_warmwasser_1: number = 0;
|
|
||||||
public anteil_warmwasser_2: number = 0;
|
|
||||||
|
|
||||||
public uid: string = "";
|
|
||||||
|
|
||||||
public wohnflaeche: number = 0;
|
|
||||||
public keller_beheizt: boolean = false;
|
|
||||||
public dachgeschoss: Dachgeschoss = Dachgeschoss.NICHT_VORHANDEN;
|
|
||||||
public zusaetzliche_heizquelle: boolean = false;
|
|
||||||
public warmwasser_enthalten: boolean = false;
|
|
||||||
public lueftungskonzept: Lueftungskonzept = "Fensterlüftung";
|
|
||||||
public wird_gekuehlt: boolean = false;
|
|
||||||
public leerstand: number = 0;
|
|
||||||
public images: string[] = [];
|
|
||||||
|
|
||||||
public versorgungssysteme: ReturnType<typeof BitChecker> = BitChecker(0);
|
|
||||||
public fenster_dach: ReturnType<typeof BitChecker> = BitChecker(0);
|
|
||||||
public energiequelle_2_nutzung: ReturnType<typeof BitChecker> = BitChecker(0);
|
|
||||||
public daemmung: ReturnType<typeof BitChecker> = BitChecker(0);
|
|
||||||
public get energetische_nutzfläche(): number {
|
public get energetische_nutzfläche(): number {
|
||||||
return this.wohnflaeche * (this.keller_beheizt ? 1.35 : 1.2);
|
return (
|
||||||
};
|
this.gebaeude.wohnflaeche *
|
||||||
|
(this.gebaeude.keller_beheizt ? 1.35 : 1.2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
public regnummer?: string;
|
||||||
* Bedarfsausweis spezifische Eigenschaften
|
|
||||||
*/
|
|
||||||
public anzahl_vollgeschosse: number = 0;
|
|
||||||
public geschosshoehe: number = 0;
|
|
||||||
public anzahl_gauben: number = 0;
|
|
||||||
public breite_gauben: number = 0;
|
|
||||||
public masse_a: number = 0;
|
|
||||||
public masse_b: number = 0;
|
|
||||||
public masse_c: number = 0;
|
|
||||||
public masse_d: number = 0;
|
|
||||||
public masse_e: number = 0;
|
|
||||||
public masse_f: number = 0;
|
|
||||||
public fensterflaeche_so_sw: number = 0;
|
|
||||||
public fensterflaeche_nw_no: number = 0;
|
|
||||||
public aussenwandflaeche_unbeheizt: number = 0;
|
|
||||||
public dachflaeche: number = 0;
|
|
||||||
public dach_u_wert: number = 0;
|
|
||||||
public deckenflaeche: number = 0;
|
|
||||||
public decke_u_wert: number = 0;
|
|
||||||
public aussenwand_flaeche: number = 0;
|
|
||||||
public aussenwand_u_wert: number = 0;
|
|
||||||
public fussboden_flaeche: number = 0;
|
|
||||||
public fussboden_u_wert: number = 0;
|
|
||||||
public volumen: number = 0;
|
|
||||||
public dicht: boolean = false;
|
|
||||||
public fenster_flaeche_1: number = 0;
|
|
||||||
public fenster_art_1: number = 0;
|
|
||||||
public fenster_flaeche_2: number = 0;
|
|
||||||
public fenster_art_2: number = 0;
|
|
||||||
public dachfenster_flaeche: number = 0;
|
|
||||||
public dachfenster_art: number = 0;
|
|
||||||
public haustuer_flaeche: number = 0;
|
|
||||||
public haustuer_art: number = 0;
|
|
||||||
public dach_bauart: string = "";
|
|
||||||
public dach_daemmung: number = 0;
|
|
||||||
public decke_bauart: string = "";
|
|
||||||
public decke_daemmung: number = 0;
|
|
||||||
public aussenwand_bauart: string = "";
|
|
||||||
public aussenwand_daemmung: number = 0;
|
|
||||||
public boden_bauart: string = "";
|
|
||||||
public boden_daemmung: number = 0;
|
|
||||||
public warmwasser_verteilung: string = "";
|
|
||||||
public warmwasser_speicherung: string = "";
|
|
||||||
public warmwasser_erzeugung: string = "";
|
|
||||||
public heizung_zentral: boolean = false;
|
|
||||||
public heizung_verteilung: string = "";
|
|
||||||
public heizung_speicherung: string = "";
|
|
||||||
public waerme_erzeugung_heizung: string = "";
|
|
||||||
public anteil_zusatzheizung: number = 0;
|
|
||||||
public kollektor_flaeche: number = 0;
|
|
||||||
|
|
||||||
// VANW
|
public kennwerte: Energiekennwerte = new Energiekennwerte();
|
||||||
|
public gebaeude: Gebaeude = new Gebaeude();
|
||||||
public vanw_stromverbrauch_enthalten: number = 0;
|
|
||||||
public vanw_stromverbrauch_sonstige: string = "";
|
|
||||||
public vanw_strom_1: number = 0;
|
|
||||||
public vanw_strom_2: number = 0;
|
|
||||||
public vanw_strom_3: number = 0;
|
|
||||||
|
|
||||||
public regnummer: string = "";
|
|
||||||
public erledigt: boolean = false;
|
|
||||||
|
|
||||||
public anrede: string = "";
|
|
||||||
public name: string = "";
|
|
||||||
public vorname: string = "";
|
|
||||||
public email: string = "";
|
|
||||||
public telefonnummer: string = "";
|
|
||||||
|
|
||||||
public constructor() {}
|
public constructor() {}
|
||||||
|
|
||||||
public async upload() {
|
|
||||||
const body = this.getUploadBody();
|
|
||||||
const response = await fetch("/api/ausweis/verbrauchsausweis", {
|
|
||||||
method: "PUT",
|
|
||||||
body: JSON.stringify(body)
|
|
||||||
})
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async save() {
|
|
||||||
const body = this.getUploadBody();
|
|
||||||
const response = await fetch("/api/ausweis/verbrauchsausweis", {
|
|
||||||
method: "POST",
|
|
||||||
body: JSON.stringify(body)
|
|
||||||
})
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getUploadBody() {
|
|
||||||
return {
|
|
||||||
ausweisart: "VA",
|
|
||||||
|
|
||||||
objekt_typ: this.objekt_typ,
|
|
||||||
objekt_plz: this.objekt_plz,
|
|
||||||
objekt_ort: this.objekt_ort,
|
|
||||||
objekt_strasse: this.objekt_strasse,
|
|
||||||
objekt_gebaeudeteil: this.objekt_gebaeudeteil,
|
|
||||||
objekt_saniert: this.objekt_saniert,
|
|
||||||
baujahr_gebaeude: this.baujahr_gebaeude,
|
|
||||||
baujahr_anlage: this.baujahr_anlage,
|
|
||||||
anzahl_einheiten: this.anzahl_einheiten,
|
|
||||||
|
|
||||||
ausstellgrund: this.ausstellgrund,
|
|
||||||
|
|
||||||
energieverbrauch_zeitraum: this.energieverbrauch_zeitraum.toDate(),
|
|
||||||
energieverbrauch_1_heizquelle_1: this.energieverbrauch_1_heizquelle_1,
|
|
||||||
energieverbrauch_2_heizquelle_1: this.energieverbrauch_2_heizquelle_1,
|
|
||||||
energieverbrauch_3_heizquelle_1: this.energieverbrauch_3_heizquelle_1,
|
|
||||||
energieverbrauch_1_heizquelle_2: this.energieverbrauch_1_heizquelle_2,
|
|
||||||
energieverbrauch_2_heizquelle_2: this.energieverbrauch_2_heizquelle_2,
|
|
||||||
energieverbrauch_3_heizquelle_2: this.energieverbrauch_3_heizquelle_2,
|
|
||||||
|
|
||||||
energietraeger_einheit_heizquelle_1: this.energietraeger_einheit_heizquelle_1,
|
|
||||||
energietraeger_einheit_heizquelle_2: this.energietraeger_einheit_heizquelle_2,
|
|
||||||
energietraeger_1: this.energietraeger_1,
|
|
||||||
energietraeger_2: this.energietraeger_2,
|
|
||||||
|
|
||||||
anteil_warmwasser_1: this.anteil_warmwasser_1,
|
|
||||||
anteil_warmwasser_2: this.anteil_warmwasser_2,
|
|
||||||
|
|
||||||
wohnflaeche: this.wohnflaeche,
|
|
||||||
|
|
||||||
keller_beheizt: this.keller_beheizt,
|
|
||||||
dachgeschoss: this.dachgeschoss,
|
|
||||||
zusaetzliche_heizquelle: this.zusaetzliche_heizquelle,
|
|
||||||
warmwasser_enthalten: this.warmwasser_enthalten,
|
|
||||||
lueftungskonzept: this.lueftungskonzept,
|
|
||||||
wird_gekuehlt: this.wird_gekuehlt,
|
|
||||||
leerstand: this.leerstand,
|
|
||||||
images: this.images,
|
|
||||||
|
|
||||||
versorgungssysteme: this.versorgungssysteme.value,
|
|
||||||
fenster_dach: this.versorgungssysteme.value,
|
|
||||||
energiequelle_2_nutzung: this.versorgungssysteme.value,
|
|
||||||
daemmung: this.versorgungssysteme.value,
|
|
||||||
|
|
||||||
anrede: this.anrede,
|
|
||||||
name: this.name,
|
|
||||||
vorname: this.vorname,
|
|
||||||
email: this.email,
|
|
||||||
telefonnummer: this.telefonnummer,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static fromBase64(base64: string): Verbrauchsausweis | null {
|
public static fromBase64(base64: string): Verbrauchsausweis | null {
|
||||||
try {
|
try {
|
||||||
const text = Buffer.from(base64, "base64");
|
const text = Buffer.from(base64, "base64");
|
||||||
@@ -224,7 +41,10 @@ export class Verbrauchsausweis implements Ausweis {
|
|||||||
return (async () => {
|
return (async () => {
|
||||||
const Endenergieverbrauch = await this.end_energie_verbrauch;
|
const Endenergieverbrauch = await this.end_energie_verbrauch;
|
||||||
|
|
||||||
const brennstoff_1 = getHeizwertfaktorClient(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
const brennstoff_1 = getHeizwertfaktorClient(
|
||||||
|
this.kennwerte.energietraeger_1,
|
||||||
|
this.kennwerte.einheit_1
|
||||||
|
);
|
||||||
|
|
||||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||||
})();
|
})();
|
||||||
@@ -232,38 +52,44 @@ export class Verbrauchsausweis implements Ausweis {
|
|||||||
|
|
||||||
public get end_energie_verbrauch(): Promise<number> {
|
public get end_energie_verbrauch(): Promise<number> {
|
||||||
return (async () => {
|
return (async () => {
|
||||||
const date = this.energieverbrauch_zeitraum;
|
const date = this.kennwerte.zeitraum;
|
||||||
const klimafaktoren = await getKlimafaktorenClient(
|
const klimafaktoren = await getKlimafaktorenClient(
|
||||||
date,
|
date,
|
||||||
this.objekt_plz
|
this.gebaeude.plz
|
||||||
);
|
);
|
||||||
|
|
||||||
// Endenergieverbrauch
|
// Endenergieverbrauch
|
||||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||||
let brennstoff_1 = getHeizwertfaktorClient(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
let brennstoff_1 = getHeizwertfaktorClient(
|
||||||
let brennstoff_2 = getHeizwertfaktorClient(this.energietraeger_2, this.energietraeger_einheit_heizquelle_2);
|
this.kennwerte.energietraeger_1,
|
||||||
|
this.kennwerte.einheit_1
|
||||||
|
);
|
||||||
|
let brennstoff_2 = getHeizwertfaktorClient(
|
||||||
|
this.kennwerte.energietraeger_2,
|
||||||
|
this.kennwerte.einheit_2
|
||||||
|
);
|
||||||
|
|
||||||
let verbrauch_1_kwh =
|
let verbrauch_1_kwh =
|
||||||
(this.energieverbrauch_1_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
|
this.kennwerte.verbrauch_1 * brennstoff_1.umrechnungsfaktor;
|
||||||
let verbrauch_2_kwh =
|
let verbrauch_2_kwh =
|
||||||
(this.energieverbrauch_2_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
|
this.kennwerte.verbrauch_2 * brennstoff_1.umrechnungsfaktor;
|
||||||
let verbrauch_3_kwh =
|
let verbrauch_3_kwh =
|
||||||
(this.energieverbrauch_3_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
|
this.kennwerte.verbrauch_3 * brennstoff_1.umrechnungsfaktor;
|
||||||
let verbrauch_4_kwh =
|
let verbrauch_4_kwh =
|
||||||
(this.energieverbrauch_1_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
|
this.kennwerte.verbrauch_4 * brennstoff_2.umrechnungsfaktor;
|
||||||
let verbrauch_5_kwh =
|
let verbrauch_5_kwh =
|
||||||
(this.energieverbrauch_2_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
|
this.kennwerte.verbrauch_5 * brennstoff_2.umrechnungsfaktor;
|
||||||
let verbrauch_6_kwh =
|
let verbrauch_6_kwh =
|
||||||
(this.energieverbrauch_3_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
|
this.kennwerte.verbrauch_6 * brennstoff_2.umrechnungsfaktor;
|
||||||
|
|
||||||
let warmwasserZuschlag = 0;
|
let warmwasserZuschlag = 0;
|
||||||
let leerstandsZuschlag = 0;
|
let leerstandsZuschlag = 0;
|
||||||
let kuehlungsZuschlag = 0;
|
let kuehlungsZuschlag = 0;
|
||||||
if (this.anteil_warmwasser_1 == 0) {
|
if (this.kennwerte.anteil_warmwasser_1 == 0) {
|
||||||
warmwasserZuschlag = 20 * this.energetische_nutzfläche * 3;
|
warmwasserZuschlag = 20 * this.energetische_nutzfläche * 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.leerstand > 0) {
|
if (this.gebaeude.leerstand > 0) {
|
||||||
let durchschnittsKlimafaktor =
|
let durchschnittsKlimafaktor =
|
||||||
klimafaktoren.reduce((a, b) => a + b, 0) / 3;
|
klimafaktoren.reduce((a, b) => a + b, 0) / 3;
|
||||||
|
|
||||||
@@ -274,17 +100,16 @@ export class Verbrauchsausweis implements Ausweis {
|
|||||||
verbrauch_4_kwh +
|
verbrauch_4_kwh +
|
||||||
verbrauch_5_kwh +
|
verbrauch_5_kwh +
|
||||||
verbrauch_6_kwh) *
|
verbrauch_6_kwh) *
|
||||||
(this.leerstand / 100)) /
|
(this.gebaeude.leerstand / 100)) /
|
||||||
durchschnittsKlimafaktor;
|
durchschnittsKlimafaktor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.energiequelle_2_nutzung[3]) {
|
if (this.gebaeude.energiequelle_2_nutzung[3]) {
|
||||||
kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3;
|
kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let anteil_heizung = 1 - this.kennwerte.anteil_warmwasser_1 / 100;
|
||||||
let anteil_heizung = 1 - this.anteil_warmwasser_1 / 100;
|
let anteil_warmwasser = this.kennwerte.anteil_warmwasser_1 / 100;
|
||||||
let anteil_warmwasser = this.anteil_warmwasser_1 / 100;
|
|
||||||
|
|
||||||
let Energieverbrauchskennwert =
|
let Energieverbrauchskennwert =
|
||||||
(anteil_heizung *
|
(anteil_heizung *
|
||||||
@@ -305,7 +130,6 @@ export class Verbrauchsausweis implements Ausweis {
|
|||||||
3 /
|
3 /
|
||||||
this.energetische_nutzfläche;
|
this.energetische_nutzfläche;
|
||||||
|
|
||||||
|
|
||||||
return Energieverbrauchskennwert;
|
return Energieverbrauchskennwert;
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,10 @@ import moment from "moment";
|
|||||||
import { BitChecker } from "../BitChecker";
|
import { BitChecker } from "../BitChecker";
|
||||||
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
||||||
import { Ausweis } from "./Ausweis";
|
import { Ausweis } from "./Ausweis";
|
||||||
|
import { Energiekennwerte } from "../Energiekennwerte";
|
||||||
|
|
||||||
|
|
||||||
export class VerbrauchsausweisGewerbe implements Ausweis {
|
export class VerbrauchsausweisGewerbe {
|
||||||
public ausweisart: Ausweisart = "VA";
|
public ausweisart: Ausweisart = "VA";
|
||||||
public id: number = 0;
|
public id: number = 0;
|
||||||
public user_id: number = 0;
|
public user_id: number = 0;
|
||||||
@@ -131,6 +132,9 @@ export class VerbrauchsausweisGewerbe implements Ausweis {
|
|||||||
public email: string = "";
|
public email: string = "";
|
||||||
public telefonnummer: string = "";
|
public telefonnummer: string = "";
|
||||||
|
|
||||||
|
public gebaeude_uid?: string;
|
||||||
|
public kennwerte: Energiekennwerte = new Energiekennwerte();
|
||||||
|
|
||||||
public constructor() {}
|
public constructor() {}
|
||||||
|
|
||||||
public static fromBase64(base64: string): VerbrauchsausweisGewerbe | null {
|
public static fromBase64(base64: string): VerbrauchsausweisGewerbe | null {
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
export class Ausweis {
|
|
||||||
public static fromUID(uid: string) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static fromPrivateId(id: number) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
25
src/lib/Energiekennwerte.ts
Normal file
25
src/lib/Energiekennwerte.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import moment, { Moment } from "moment";
|
||||||
|
|
||||||
|
export class Energiekennwerte {
|
||||||
|
public zeitraum: Moment = moment();
|
||||||
|
public verbrauch_1: number = 0;
|
||||||
|
public verbrauch_2: number = 0;
|
||||||
|
public verbrauch_3: number = 0;
|
||||||
|
public verbrauch_4: number = 0;
|
||||||
|
public verbrauch_5: number = 0;
|
||||||
|
public verbrauch_6: number = 0;
|
||||||
|
public einheit_1: string = "";
|
||||||
|
public einheit_2: string = "";
|
||||||
|
public energietraeger_1: string = "";
|
||||||
|
public energietraeger_2: string = "";
|
||||||
|
public anteil_warmwasser_1: number = 0;
|
||||||
|
public anteil_warmwasser_2: number = 0;
|
||||||
|
public warmwasser_enthalten: boolean = false;
|
||||||
|
public zusaetzliche_heizquelle: boolean = false;
|
||||||
|
|
||||||
|
public constructor(initializer?: Energiekennwerte) {
|
||||||
|
if (initializer) {
|
||||||
|
this.zeitraum = initializer.zeitraum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
src/lib/Gebaeude.ts
Normal file
37
src/lib/Gebaeude.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
import { Ausweis } from "./Ausweis/Ausweis";
|
||||||
|
import { Dachgeschoss, Lueftungskonzept } from "./Ausweis/types";
|
||||||
|
import { BitChecker } from "./BitChecker";
|
||||||
|
|
||||||
|
export class Gebaeude {
|
||||||
|
public typ: string = "";
|
||||||
|
public plz: string = "";
|
||||||
|
public ort: string = "";
|
||||||
|
public strasse: string = "";
|
||||||
|
public gebaeudeteil: string = "";
|
||||||
|
public saniert: boolean = false;
|
||||||
|
public baujahr: number = 0;
|
||||||
|
public einheiten: number = 0;
|
||||||
|
public wohnflaeche: number = 0;
|
||||||
|
public keller_beheizt: boolean = false;
|
||||||
|
public dachgeschoss_beheizt: Dachgeschoss = Dachgeschoss.UNBEHEIZT;
|
||||||
|
public lueftungskonzept: Lueftungskonzept = "Fensterlüftung";
|
||||||
|
public wird_gekuehlt: boolean = false;
|
||||||
|
public leerstand: number = 0;
|
||||||
|
public versorgungssysteme: boolean[] = BitChecker(0);
|
||||||
|
public fenster_dach: boolean[] = BitChecker(0);
|
||||||
|
public energiequelle_2_nutzung: boolean[] = BitChecker(0);
|
||||||
|
public daemmung: boolean[] = BitChecker(0);
|
||||||
|
|
||||||
|
public ausweis?: Ausweis;
|
||||||
|
|
||||||
|
public uid?: string;
|
||||||
|
|
||||||
|
public constructor(initializer?: Gebaeude) {
|
||||||
|
if (initializer) {
|
||||||
|
this.typ = initializer.typ;
|
||||||
|
this.plz = initializer.plz;
|
||||||
|
this.ort = initializer.ort;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,66 +4,62 @@ import { db } from "src/lib/shared";
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
const AusweisUploadChecker = z.object({
|
const AusweisUploadChecker = z.object({
|
||||||
ausweisart: z.enum(["VA", "BA", "VANW"]),
|
ausweis: z.object({
|
||||||
|
ausweisart: z.enum(["VA", "BA", "VANW"]),
|
||||||
|
ausstellgrund: z.enum([
|
||||||
|
"Vermietung",
|
||||||
|
"Neubau",
|
||||||
|
"Verkauf",
|
||||||
|
"Modernisierung",
|
||||||
|
"Sonstiges",
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
|
||||||
objekt_typ: z.string(),
|
gebaeude: z.object({
|
||||||
objekt_plz: z.string(),
|
typ: z.string(),
|
||||||
objekt_ort: z.string(),
|
plz: z.string(),
|
||||||
objekt_strasse: z.string(),
|
ort: z.string(),
|
||||||
objekt_gebaeudeteil: z.string(),
|
strasse: z.string(),
|
||||||
objekt_saniert: z.boolean() ,
|
gebaeudeteil: z.string(),
|
||||||
baujahr_gebaeude: z.number(),
|
saniert: z.boolean(),
|
||||||
baujahr_anlage: z.number(),
|
baujahr: z.number(),
|
||||||
anzahl_einheiten: z.number(),
|
einheiten: z.number(),
|
||||||
|
wohnflaeche: z.number(),
|
||||||
|
keller_beheizt: z.boolean(),
|
||||||
|
dachgeschoss_beheizt: z.number(),
|
||||||
|
lueftungskonzept: z.enum([
|
||||||
|
"Fensterlüftung",
|
||||||
|
"Schachtlüftung",
|
||||||
|
"Lüftungsanlage ohne Wärmerückgewinnung",
|
||||||
|
"Lüftungsanlage mit Wärmerückgewinnung",
|
||||||
|
]),
|
||||||
|
wird_gekuehlt: z.boolean(),
|
||||||
|
leerstand: z.number(),
|
||||||
|
versorgungssysteme: z.number(),
|
||||||
|
fenster_dach: z.number(),
|
||||||
|
energiequelle_2_nutzung: z.number(),
|
||||||
|
daemmung: z.number(),
|
||||||
|
}),
|
||||||
|
|
||||||
ausstellgrund: z.enum(["Vermietung"
|
kennwerte: z.object({
|
||||||
,"Neubau"
|
zeitraum: z.string(),
|
||||||
, "Verkauf"
|
verbrauch_1: z.number(),
|
||||||
, "Modernisierung"
|
verbrauch_2: z.number(),
|
||||||
, "Sonstiges"]),
|
verbrauch_3: z.number(),
|
||||||
|
verbrauch_4: z.number(),
|
||||||
|
verbrauch_5: z.number(),
|
||||||
|
verbrauch_6: z.number(),
|
||||||
|
einheit_1: z.string(),
|
||||||
|
einheit_2: z.string(),
|
||||||
|
energietraeger_1: z.string(),
|
||||||
|
energietraeger_2: z.string(),
|
||||||
|
anteil_warmwasser_1: z.number(),
|
||||||
|
anteil_warmwasser_2: z.number(),
|
||||||
|
}),
|
||||||
|
|
||||||
energieverbrauch_zeitraum: z.string(),
|
gebaeude_uid: z.string().optional(),
|
||||||
energieverbrauch_1_heizquelle_1: z.number(),
|
kennwerte_uid: z.string().optional(),
|
||||||
energieverbrauch_2_heizquelle_1: z.number(),
|
ausweis_uid: z.string().optional(),
|
||||||
energieverbrauch_3_heizquelle_1: z.number(),
|
|
||||||
energieverbrauch_1_heizquelle_2: z.number(),
|
|
||||||
energieverbrauch_2_heizquelle_2: z.number(),
|
|
||||||
energieverbrauch_3_heizquelle_2: z.number(),
|
|
||||||
|
|
||||||
energietraeger_einheit_heizquelle_1: z.string(),
|
|
||||||
energietraeger_einheit_heizquelle_2: z.string(),
|
|
||||||
energietraeger_1: z.string(),
|
|
||||||
energietraeger_2: z.string(),
|
|
||||||
|
|
||||||
anteil_warmwasser_1: z.number(),
|
|
||||||
anteil_warmwasser_2: z.number(),
|
|
||||||
|
|
||||||
wohnflaeche: z.number(),
|
|
||||||
|
|
||||||
keller_beheizt: z.boolean(),
|
|
||||||
dachgeschoss: z.number(),
|
|
||||||
zusaetzliche_heizquelle: z.boolean(),
|
|
||||||
warmwasser_enthalten: z.boolean(),
|
|
||||||
lueftungskonzept: z.enum([
|
|
||||||
"Fensterlüftung",
|
|
||||||
"Schachtlüftung",
|
|
||||||
"Lüftungsanlage ohne Wärmerückgewinnung",
|
|
||||||
"Lüftungsanlage mit Wärmerückgewinnung",
|
|
||||||
]),
|
|
||||||
wird_gekuehlt: z.boolean(),
|
|
||||||
leerstand: z.number(),
|
|
||||||
images: z.array(z.string()),
|
|
||||||
|
|
||||||
versorgungssysteme: z.number(),
|
|
||||||
fenster_dach: z.number(),
|
|
||||||
energiequelle_2_nutzung: z.number(),
|
|
||||||
daemmung: z.number(),
|
|
||||||
|
|
||||||
anrede: z.string().optional(),
|
|
||||||
name: z.string().optional(),
|
|
||||||
vorname: z.string().optional(),
|
|
||||||
email: z.string().optional(),
|
|
||||||
telefonnummer: z.string().optional(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,7 +68,7 @@ const AusweisUploadChecker = z.object({
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const post: APIRoute = async ({ request }) => {
|
export const post: APIRoute = async ({ request }) => {
|
||||||
const body = await request.json();
|
const body: z.infer<typeof AusweisUploadChecker> = await request.json();
|
||||||
|
|
||||||
const validation = AusweisUploadChecker.safeParse(body);
|
const validation = AusweisUploadChecker.safeParse(body);
|
||||||
|
|
||||||
@@ -80,43 +76,63 @@ export const post: APIRoute = async ({ request }) => {
|
|||||||
return error(validation.error.issues);
|
return error(validation.error.issues);
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await db("ausweise").insert(body).returning(["uid", "id"]);
|
let gebaeude, kennwerte, ausweis;
|
||||||
if (!result) {
|
if (body.gebaeude_uid) {
|
||||||
|
gebaeude = await db("gebaeude")
|
||||||
|
.update(body.gebaeude)
|
||||||
|
.where("uid", body.gebaeude_uid)
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
} else {
|
||||||
|
gebaeude = await db("gebaeude")
|
||||||
|
.insert(body.gebaeude)
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gebaeude) {
|
||||||
return ActionFailedError();
|
return ActionFailedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
const { uid, id } = result[0];
|
if (body.kennwerte_uid) {
|
||||||
|
kennwerte = await db("energiekennwerte")
|
||||||
|
.update({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
|
||||||
|
.where("uid", body.kennwerte_uid)
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
} else {
|
||||||
|
kennwerte = await db("energiekennwerte")
|
||||||
|
.insert({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!uid || !id) {
|
if (!kennwerte) {
|
||||||
|
return ActionFailedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (body.ausweis_uid) {
|
||||||
|
ausweis = await db("energieausweise")
|
||||||
|
.update({
|
||||||
|
...body.ausweis,
|
||||||
|
gebaeude_id: gebaeude[0].id,
|
||||||
|
energiekennwerte_id: kennwerte[0].id,
|
||||||
|
})
|
||||||
|
.where("uid", body.ausweis_uid)
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
} else {
|
||||||
|
ausweis = await db("energieausweise")
|
||||||
|
.insert({
|
||||||
|
...body.ausweis,
|
||||||
|
gebaeude_id: gebaeude[0].id,
|
||||||
|
energiekennwerte_id: kennwerte[0].id,
|
||||||
|
})
|
||||||
|
.returning(["uid", "id"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ausweis) {
|
||||||
return ActionFailedError();
|
return ActionFailedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
return success({
|
return success({
|
||||||
uid, id
|
ausweis: ausweis[0],
|
||||||
});
|
kennwerte: kennwerte[0],
|
||||||
};
|
gebaeude: gebaeude[0],
|
||||||
|
|
||||||
export const put: APIRoute = async ({ request }) => {
|
|
||||||
const body = await request.json();
|
|
||||||
|
|
||||||
const validation = AusweisUploadChecker.safeParse(body);
|
|
||||||
|
|
||||||
if (!validation.success) {
|
|
||||||
return error(validation.error.issues);
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = await db("ausweise").insert(body).returning(["uid", "id"]);
|
|
||||||
if (!result) {
|
|
||||||
return ActionFailedError();
|
|
||||||
}
|
|
||||||
|
|
||||||
const { uid, id } = result[0];
|
|
||||||
|
|
||||||
if (!uid || !id) {
|
|
||||||
return ActionFailedError();
|
|
||||||
}
|
|
||||||
|
|
||||||
return success({
|
|
||||||
uid, id
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -1,13 +1,20 @@
|
|||||||
import type { APIRoute } from "astro";
|
import type { APIRoute } from "astro";
|
||||||
import { ActionFailedError, error, success } from "src/lib/APIResponse";
|
import {
|
||||||
|
ActionFailedError,
|
||||||
|
MissingEntityError,
|
||||||
|
error,
|
||||||
|
success,
|
||||||
|
} from "src/lib/APIResponse";
|
||||||
import * as jimp from "jimp";
|
import * as jimp from "jimp";
|
||||||
import { v4 as uuid } from "uuid";
|
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
import { db } from "src/lib/shared";
|
||||||
|
|
||||||
const ImageUploadChecker = z.object({
|
const ImageUploadChecker = z.object({
|
||||||
data: z.string(),
|
data: z.string(),
|
||||||
name: z.string()
|
name: z.string(),
|
||||||
|
gebaeude_uid: z.string().optional(),
|
||||||
|
kategorie: z.string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -16,12 +23,12 @@ const ImageUploadChecker = z.object({
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const put: APIRoute = async ({ request }) => {
|
export const put: APIRoute = async ({ request }) => {
|
||||||
const body = await request.json();
|
const body: z.infer<typeof ImageUploadChecker> = await request.json();
|
||||||
|
|
||||||
const result = ImageUploadChecker.safeParse(body);
|
const validation = ImageUploadChecker.safeParse(body);
|
||||||
|
|
||||||
if (!result.success) {
|
if (!validation.success) {
|
||||||
return error(result.error.issues);
|
return error(validation.error.issues);
|
||||||
}
|
}
|
||||||
|
|
||||||
const image = Buffer.from(body.data, "base64url");
|
const image = Buffer.from(body.data, "base64url");
|
||||||
@@ -29,16 +36,47 @@ export const put: APIRoute = async ({ request }) => {
|
|||||||
let jimpResult;
|
let jimpResult;
|
||||||
try {
|
try {
|
||||||
jimpResult = await jimp.read(image);
|
jimpResult = await jimp.read(image);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
return ActionFailedError();
|
return ActionFailedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
const uid = uuid();
|
let gebaeude;
|
||||||
const location = path.join(uid);
|
if (!body.gebaeude_uid) {
|
||||||
|
gebaeude = await db("gebaeude").insert({}).returning(["uid", "id"]);
|
||||||
|
|
||||||
jimpResult.quality(0.75).write(location);
|
if (!gebaeude) {
|
||||||
|
return ActionFailedError();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gebaeude = await db("gebaeude")
|
||||||
|
.select("*")
|
||||||
|
.where("uid", body.gebaeude_uid);
|
||||||
|
|
||||||
|
if (!gebaeude) {
|
||||||
|
return MissingEntityError("gebaeude");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await db("gebaeude_bilder")
|
||||||
|
.insert({ gebaeude_id: gebaeude[0].id, kategorie: body.kategorie })
|
||||||
|
.returning(["uid"]);
|
||||||
|
|
||||||
|
if (!result) {
|
||||||
|
return ActionFailedError();
|
||||||
|
}
|
||||||
|
|
||||||
|
const location = path.join("uploads", `${result[0].uid}.jpg`);
|
||||||
|
|
||||||
|
const buffer = await jimpResult.getBufferAsync(jimp.MIME_JPEG)
|
||||||
|
|
||||||
|
if (buffer.length > 3_000_000) {
|
||||||
|
jimpResult.quality(75).write(location);
|
||||||
|
} else {
|
||||||
|
jimpResult.write(location);
|
||||||
|
}
|
||||||
|
|
||||||
return success({
|
return success({
|
||||||
uid
|
uid: result[0].uid,
|
||||||
|
gebaeude_uid: gebaeude[0].uid,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,54 +1,44 @@
|
|||||||
---
|
---
|
||||||
import AusweisLayout from "~/layouts/AusweisLayout.astro";
|
import AusweisLayout from "~/layouts/AusweisLayout.astro";
|
||||||
import VerbrauchsausweisContent from "~/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte";
|
import VerbrauchsausweisContent from "~/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte";
|
||||||
/**
|
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||||
* include('scripts/dbcon.php');
|
import { db } from "src/lib/shared";
|
||||||
ini_set('session.cookie_secure', "1");
|
import { Gebaeude } from "src/lib/Gebaeude";
|
||||||
ini_set('session.cookie_httponly', "1");
|
import { Energiekennwerte } from "src/lib/Energiekennwerte";
|
||||||
ini_set('session.cookie_samesite', 'None');
|
import { Ausweis, getAusweis } from "src/lib/Ausweis/Ausweis";
|
||||||
session_start();
|
|
||||||
|
|
||||||
if ($_GET['recode'] != '') {
|
let gebaeude = new Gebaeude();
|
||||||
$_SESSION['recode'] = $_GET['recode'];
|
if (Astro.cookies.has("ausweis_uid")) {
|
||||||
}
|
const uid = Astro.cookies.get("ausweis_uid").value;
|
||||||
if ($_GET['anlass'] != '') {
|
let result = await db<{ gebaeude: Gebaeude, kennwerte: Energiekennwerte, ausweis: Ausweis}>("gebaeude")
|
||||||
$_SESSION['IGanlass'] = $_GET['anlass'];
|
.select([
|
||||||
}
|
db.raw("(json_agg(gebaeude)->0) AS gebaeude"),
|
||||||
if ($_GET['san'] != '') {
|
db.raw("(json_agg(energiekennwerte)->0) AS kennwerte"),
|
||||||
$_SESSION['IGsan'] = $_GET['san'];
|
db.raw("(json_agg(energieausweise)->0) AS ausweis"),
|
||||||
}
|
])
|
||||||
if ($_GET['eid'] != '' or $_POST['eid'] != '') {
|
.leftJoin(
|
||||||
include("transfer/fetchsp.php");
|
"energiekennwerte",
|
||||||
}
|
"energiekennwerte.gebaeude_id",
|
||||||
?>
|
"gebaeude.id"
|
||||||
|
)
|
||||||
|
.leftJoin(
|
||||||
|
"energieausweise",
|
||||||
|
"energieausweise.gebaeude_id",
|
||||||
|
"gebaeude.id"
|
||||||
|
)
|
||||||
|
.where("gebaeude.uid", uid)
|
||||||
|
.groupBy("gebaeude.id")
|
||||||
|
.first();
|
||||||
|
|
||||||
<?php
|
if (result) {
|
||||||
$checkArt = $_SESSION['ausweisarte'];
|
gebaeude = new Gebaeude(result.gebaeude);
|
||||||
|
gebaeude.ausweis = getAusweis(result.ausweis.ausweisart, result.ausweis);
|
||||||
switch ($checkArt) {
|
gebaeude.ausweis.gebaeude = gebaeude;
|
||||||
|
gebaeude.ausweis.kennwerte = new Energiekennwerte(result.kennwerte);
|
||||||
case 'VA':
|
}
|
||||||
$headART = "Verbrauchsausweis - 45€";
|
|
||||||
$titleART = "Verbrauchsausweis erstellen · Kaufabschluss";
|
|
||||||
break;
|
|
||||||
case 'VANW':
|
|
||||||
$headART = "Verbrauchsausweis Gewerbe - 65€";
|
|
||||||
$titleART = "Verbrauchsausweis Gewerbe erstellen · Kaufabschluss";
|
|
||||||
break;
|
|
||||||
case 'BA':
|
|
||||||
$headART = "Bedarfsausweis - 75€";
|
|
||||||
$titleART = "Bedarfsausweis erstellen · Kaufabschluss";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
define("TEST_USER_NAME", "user@ib-cornelsen.de");
|
|
||||||
if ($_SESSION["username"] == TEST_USER_NAME) {
|
|
||||||
echo "<script type='text/javascript' src='/energieausweis-erstellen/FORM/js/auto-fill-values.js'></script>";
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
*/
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||||
<VerbrauchsausweisContent client:load></VerbrauchsausweisContent>
|
<VerbrauchsausweisContent client:load gebaeude={gebaeude} />
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|||||||
BIN
uploads/17693546-b281-40f2-a7b8-dcd4159245e4.jpg
Normal file
BIN
uploads/17693546-b281-40f2-a7b8-dcd4159245e4.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 MiB |
Reference in New Issue
Block a user