This commit is contained in:
Moritz Utcke
2025-04-21 21:40:17 -03:00
parent 568f9769ee
commit e2c14dace9
9 changed files with 156 additions and 144 deletions

View File

@@ -1,5 +1,5 @@
---
return Astro.redirect("/dashboard/objekte/1", 301);
return Astro.redirect("/dashboard/objekte?p=1", 301);
---

View File

@@ -0,0 +1,83 @@
---
import UserLayout from "#layouts/DashboardLayout.astro";
import { Enums, prisma } from "#lib/server/prisma";
import { getCurrentUser } from "#lib/server/user";
import DashboardAufnahmeModule from "#modules/Dashboard/DashboardAufnahmeModule.svelte";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
const id = Astro.params.id as string;
const page = Number(Astro.url.searchParams.get("p"));
const user = await getCurrentUser(Astro);
if (!user) {
return Astro.redirect("/auth/login");
}
const totalPageCount = await prisma.aufnahme.count({
where:
user.rolle === Enums.BenutzerRolle.USER
? {
benutzer: {
id: user.id,
},
}
: {},
});
let ausweis;
// Wir fragen den neuesten Ausweis ab
// Falls der Nutzer ein Admin ist dann kommt der ganz neueste ansonsten der neueste des eingeloggten Benutzers.
if (user.rolle === Enums.BenutzerRolle.USER) {
const adapter = getPrismaAusweisAdapter(id);
ausweis = await adapter?.findUnique({
where: {
id,
benutzer_id: user.id,
},
include: {
rechnung: true,
aufnahme: {
include: {
bilder: true,
unterlagen: true,
objekt: true,
},
},
},
});
} else {
const adapter = getPrismaAusweisAdapter(id);
ausweis = await adapter?.findUnique({
where: {
id,
},
include: {
rechnung: true,
aufnahme: {
include: {
bilder: true,
unterlagen: true,
objekt: true,
},
},
},
});
}
if (!ausweis) {
return Astro.redirect("/dashboard/objekte?p=1")
}
---
<UserLayout title="Objekte" {user}>
<DashboardAufnahmeModule
{ausweis}
benutzer={user}
{totalPageCount}
{page}
client:load
/>
<!-- {!aufnahme ? <p>Keine weiteren Ausweise vorhanden.</p> : <DashboardAufnahmeModule {user} {aufnahme} benutzer={user} objekt={aufnahme.objekt} client:load/>} -->
<!-- <DashboardModule {user} {objekte} totalPages={Math.ceil(totalPages / 25)} page={page} {id} client:load /> -->
</UserLayout>

View File

@@ -1,134 +0,0 @@
---
import UserLayout from "#layouts/DashboardLayout.astro";
import { Enums, prisma } from "#lib/server/prisma";
import { getCurrentUser } from "#lib/server/user";
import DashboardAufnahmeModule from "#modules/Dashboard/DashboardAufnahmeModule.svelte";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
const params = Astro.params;
const page = Number(params.page);
const id = Astro.url.searchParams.get("id") || undefined;
const user = await getCurrentUser(Astro);
if (!user) {
return Astro.redirect("/auth/login");
}
const totalPageCount = await prisma.aufnahme.count({
where:
user.rolle === Enums.BenutzerRolle.USER
? {
benutzer: {
id: user.id,
},
}
: {},
});
if (page < 1 || page > totalPageCount) {
return Astro.redirect("/dashboard/objekte/1");
}
let ausweis,
result: { id: string; updated_at: Date }[] = [];
// Wir fragen den neuesten Ausweis ab
// Falls der Nutzer ein Admin ist dann kommt der ganz neueste ansonsten der neueste des eingeloggten Benutzers.
if (user.rolle === Enums.BenutzerRolle.USER) {
if (id) {
const adapter = getPrismaAusweisAdapter(id);
ausweis = await adapter?.findUnique({
where: {
id,
benutzer_id: user.id,
},
include: {
rechnung: true,
aufnahme: {
include: {
bilder: true,
unterlagen: true,
objekt: true,
},
},
},
});
} else {
result =
await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "BedarfsausweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "BedarfsausweisGewerbe" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "GEGNachweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "GEGNachweisGewerbe" WHERE benutzer_id = ${user.id}
ORDER BY updated_at DESC LIMIT 1 OFFSET ${page - 1}`;
}
} else {
if (id) {
const adapter = getPrismaAusweisAdapter(id);
ausweis = await adapter?.findUnique({
where: {
id,
},
include: {
rechnung: true,
aufnahme: {
include: {
bilder: true,
unterlagen: true,
objekt: true,
},
},
},
});
} else {
result =
await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" UNION ALL
SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" UNION ALL
SELECT id, updated_at FROM "BedarfsausweisWohnen" UNION ALL
SELECT id, updated_at FROM "BedarfsausweisGewerbe" UNION ALL
SELECT id, updated_at FROM "GEGNachweisWohnen" UNION ALL
SELECT id, updated_at FROM "GEGNachweisGewerbe"
ORDER BY updated_at DESC LIMIT 1 OFFSET ${page - 1}`;
}
}
if (result.length > 0) {
const adapter = getPrismaAusweisAdapter(result[0].id);
ausweis = await adapter?.findUnique({
where: {
id: result[0].id,
},
include: {
rechnung: true,
aufnahme: {
include: {
bilder: true,
unterlagen: true,
objekt: true,
},
},
},
});
}
if (!ausweis) {
return Astro.redirect("/dashboard/objekte/1")
}
---
<UserLayout title="Objekte" {user}>
<DashboardAufnahmeModule
{ausweis}
benutzer={user}
{totalPageCount}
{page}
client:load
/>
<!-- {!aufnahme ? <p>Keine weiteren Ausweise vorhanden.</p> : <DashboardAufnahmeModule {user} {aufnahme} benutzer={user} objekt={aufnahme.objekt} client:load/>} -->
<!-- <DashboardModule {user} {objekte} totalPages={Math.ceil(totalPages / 25)} page={page} {id} client:load /> -->
</UserLayout>

View File

@@ -1,5 +1,56 @@
---
return Astro.redirect("/dashboard/objekte/1");
---
import { Enums, prisma } from "#lib/server/prisma";
import { getCurrentUser } from "#lib/server/user";
<script></script>
const page = Number(Astro.url.searchParams.get("p"));
const user = await getCurrentUser(Astro);
if (!user) {
return Astro.redirect("/auth/login");
}
const totalPageCount = await prisma.aufnahme.count({
where:
user.rolle === Enums.BenutzerRolle.USER
? {
benutzer: {
id: user.id,
},
}
: {},
});
if (page < 1 || page > totalPageCount) {
return Astro.redirect("/dashboard/objekte?p=1");
}
let result: { id: string; updated_at: Date }[] = [];
// Wir fragen den neuesten Ausweis ab
// Falls der Nutzer ein Admin ist dann kommt der ganz neueste ansonsten der neueste des eingeloggten Benutzers.
if (user.rolle === Enums.BenutzerRolle.USER) {
result =
await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "BedarfsausweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "BedarfsausweisGewerbe" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "GEGNachweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL
SELECT id, updated_at FROM "GEGNachweisGewerbe" WHERE benutzer_id = ${user.id}
ORDER BY updated_at DESC LIMIT 1 OFFSET ${page - 1}`;
} else {
result =
await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" UNION ALL
SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" UNION ALL
SELECT id, updated_at FROM "BedarfsausweisWohnen" UNION ALL
SELECT id, updated_at FROM "BedarfsausweisGewerbe" UNION ALL
SELECT id, updated_at FROM "GEGNachweisWohnen" UNION ALL
SELECT id, updated_at FROM "GEGNachweisGewerbe"
ORDER BY updated_at DESC LIMIT 1 OFFSET ${page - 1}`;
}
if (!result) {
return Astro.redirect("/dashboard/objekte?p=1");
}
return Astro.redirect(`/dashboard/objekte/${result[0].id}?p=${page}`)
---