---
import { createCaller } from "../../../astro-typesafe-api-caller.js";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import DashboardModule from "#modules/Dashboard/DashboardModule.svelte";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
import Layout from "#layouts/Layout.astro";
import { prisma } from "#lib/server/prisma";
import UserLayout from "#layouts/DashboardLayout.astro";
import DashboardAufnahmeModule from "#modules/Dashboard/DashboardAufnahmeModule.svelte";

const { uid } = Astro.params;

const accessTokenValid = await validateAccessTokenServer(Astro);

if (!accessTokenValid) {
	return Astro.redirect("/auth/login")
}

const caller = createCaller(Astro);

const user = await caller.user.self.GET.fetch(undefined, {
	headers: {
		"Authorization": `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
	}
});

if (!user) {
	return Astro.redirect("/auth/login")
}

const aufnahme = await prisma.aufnahme.findUnique({
	where: {
		benutzer: {
			uid: user.uid
		},
		uid
	},
	include: {
		objekt: true,
		bilder: true,
		unterlagen: true,
		bedarfsausweise_wohnen: true,
		verbrauchsausweise_gewerbe: true,
		verbrauchsausweise_wohnen: true,
		bedarfsausweise_gewerbe: true,
		geg_nachweise_gewerbe: true,
		geg_nachweise_wohnen: true,
		events: true
	}
})

if (!aufnahme) {
	return Astro.redirect("/dashboard")
}
---

<UserLayout title="Dashboard" {user}>
	<DashboardAufnahmeModule {user} {aufnahme} objekt={aufnahme.objekt} client:only/>
</UserLayout>