Files
online-energieausweis/src/pages/dashboard/objekte/[page].astro

162 lines
2.8 KiB
Plaintext

---
import UserLayout from "#layouts/DashboardLayout.astro";
import { Enums, prisma } from "#lib/server/prisma";
import DashboardModule from "#modules/Dashboard/DashboardModule.svelte";
import { getCurrentUser } from "#lib/server/user";
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 totalPages = await prisma.objekt.count({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
}
} : {}
})
let objekte = []
if (id) {
objekte = await prisma.objekt.findMany({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
},
} : {
...(id ? {
OR: [
{
aufnahmen: {
every: {
verbrauchsausweise_gewerbe: {
some: {
id: {
contains: id
}
}
},
}
}
},
{
aufnahmen: {
every: {
verbrauchsausweise_wohnen: {
some: {
id: {
contains: id
}
}
},
}
}
},
{
aufnahmen: {
every: {
bedarfsausweise_wohnen: {
some: {
id: {
contains: id
}
}
},
}
}
},]} : {})
},
orderBy: {
erstellungsdatum: "desc"
},
include: {
aufnahmen: {
include: {
bilder: true,
unterlagen: true,
bedarfsausweise_wohnen: true,
verbrauchsausweise_gewerbe: true,
verbrauchsausweise_wohnen: true
}
}
},
take: 25,
skip: (page - 1) * 25
})
} else {
objekte = await prisma.objekt.findMany({
where: user.rolle === Enums.BenutzerRolle.USER ? {
benutzer: {
id: user.id
},
} : {
OR: [
{
aufnahmen: {
every: {
verbrauchsausweise_gewerbe: {
some: {
ausgestellt: false,
bestellt: true
}
},
}
}
},
{
aufnahmen: {
every: {
verbrauchsausweise_wohnen: {
some: {
ausgestellt: false,
bestellt: true
}
},
}
}
},
{
aufnahmen: {
every: {
bedarfsausweise_wohnen: {
some: {
ausgestellt: false,
bestellt: true
}
},
}
}
}]
},
orderBy: {
erstellungsdatum: "desc"
},
include: {
aufnahmen: {
include: {
bilder: true,
unterlagen: true,
bedarfsausweise_wohnen: true,
verbrauchsausweise_gewerbe: true,
verbrauchsausweise_wohnen: true
}
}
},
take: 25,
skip: (page - 1) * 25
})
}
---
<UserLayout title="Objekte" {user}>
<DashboardModule {user} {objekte} totalPages={Math.ceil(totalPages / 25)} page={page} {id} client:load />
</UserLayout>