Dashboard Template

This commit is contained in:
Moritz Utcke
2025-04-21 17:53:19 -03:00
parent 05b31a4862
commit 62e6dd44b9
3 changed files with 124 additions and 151 deletions

View File

@@ -4,6 +4,7 @@ import { Enums, prisma } from "#lib/server/prisma";
import DashboardModule from "#modules/Dashboard/DashboardModule.svelte";
import { getCurrentUser } from "#lib/server/user";
import DashboardAufnahmeModule from "#modules/Dashboard/DashboardAufnahmeModule.svelte";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
const params = Astro.params;
@@ -17,7 +18,7 @@ if (!user) {
return Astro.redirect("/auth/login")
}
const totalPages = await prisma.aufnahme.count({
const totalPageCount = await prisma.aufnahme.count({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
@@ -25,113 +26,82 @@ const totalPages = await prisma.aufnahme.count({
} : {}
})
let aufnahme;
if (id) {
aufnahme = await prisma.aufnahme.findFirst({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
},
} : {
...(id ? {
OR: [
{
verbrauchsausweise_gewerbe: {
some: {
id: {
contains: id
}
}
}
},
{
verbrauchsausweise_wohnen: {
some: {
id: {
contains: id
}
}
}
},
{
bedarfsausweise_wohnen: {
some: {
id: {
contains: id
}
}
}
},]} : {})
},
orderBy: {
erstellungsdatum: "desc"
},
include: {
bilder: true,
unterlagen: true,
bedarfsausweise_wohnen: true,
verbrauchsausweise_gewerbe: true,
verbrauchsausweise_wohnen: true,
objekt: true
},
take: 1,
skip: (page - 1)
})
} else {
aufnahme = await prisma.aufnahme.findFirst({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
},
} : {
OR: [
{
verbrauchsausweise_gewerbe: {
some: {
ausgestellt: false,
bestellt: true
}
},
},
{
verbrauchsausweise_wohnen: {
some: {
ausgestellt: false,
bestellt: true
}
},
},
{
bedarfsausweise_wohnen: {
some: {
ausgestellt: false,
bestellt: true
}
},
}]
},
orderBy: {
erstellungsdatum: "desc"
},
include: {
bilder: true,
unterlagen: true,
bedarfsausweise_wohnen: true,
verbrauchsausweise_gewerbe: true,
verbrauchsausweise_wohnen: true,
objekt: true
},
take: 1,
skip: (page - 1)
})
if (page < 0 || page > totalPageCount) {
return Astro.redirect("/dashboard/objekte/0")
}
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} ORDER BY updated_at DESC LIMIT 1 OFFSET ${page}`;
}
} 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" ORDER BY updated_at DESC LIMIT 1 OFFSET ${page}`;
}
}
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
}
}
}
})
}
---
<UserLayout title="Objekte" {user}>
<DashboardAufnahmeModule {user} {aufnahme} benutzer={user} objekt={aufnahme.objekt} client:load/>
<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>