57 lines
2.3 KiB
Plaintext
57 lines
2.3 KiB
Plaintext
---
|
|
import { Enums, prisma } from "#lib/server/prisma";
|
|
import UserLayout from "#layouts/DashboardLayout.astro";
|
|
import { getCurrentUser } from "#lib/server/user";
|
|
|
|
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.ADMIN || Enums.BenutzerRolle.RESELLER
|
|
? {
|
|
benutzer: {
|
|
id: user.id,
|
|
},
|
|
}
|
|
: {},
|
|
});
|
|
|
|
if ((page < 1 || page > totalPageCount) && totalPageCount > 0) {
|
|
return Astro.redirect("/dashboard/objekte?p=1");
|
|
} else if (totalPageCount === 0) {
|
|
return Astro.redirect("/dashboard/objekte/leer");
|
|
}
|
|
|
|
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.ADMIN) {
|
|
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" WHERE ausgestellt = ${false} AND bestellt = ${true} UNION ALL
|
|
SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE ausgestellt = ${false} AND bestellt = ${true} UNION ALL
|
|
SELECT id, updated_at FROM "BedarfsausweisWohnen" WHERE ausgestellt = ${false} AND bestellt = ${true} 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) {
|
|
return Astro.redirect(`/dashboard/objekte/${result[0].id}?p=${page}`)
|
|
}
|
|
--- |