168 lines
3.0 KiB
Plaintext
168 lines
3.0 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,
|
|
bedarfsausweise_gewerbe: true,
|
|
geg_nachweise_gewerbe: true,
|
|
geg_nachweise_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,
|
|
bedarfsausweise_gewerbe: true,
|
|
geg_nachweise_gewerbe: true,
|
|
geg_nachweise_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> |