import { ObjektKomplettClient } from "#components/Ausweis/types.js";
import { omit } from "#lib/helpers.js";
import { prisma } from "#lib/server/prisma";

export async function getObjektKomplettClient(uid: string): Promise<ObjektKomplettClient | null> {
	const objekt = await prisma.objekt.findUnique({
		where: {
			uid
		},
		include: {
			aufnahmen: {
				include: {
					bilder: true,
					unterlagen: true,
					bedarfsausweise_wohnen: true,
					verbrauchsausweise_gewerbe: true,
					verbrauchsausweise_wohnen: true,
					events: true
				}
			},
		}
	})

	if (!objekt) {
		return null;
	}

	return {
		...omit(objekt, ["benutzer_id", "id"]),
		aufnahmen: objekt.aufnahmen.map(aufnahme => ({
			...omit(aufnahme, ["id", "objekt_id", "benutzer_id", "bedarfsausweise_wohnen", "verbrauchsausweise_gewerbe", "verbrauchsausweise_wohnen"]),
			bedarfsausweise_wohnen: aufnahme.bedarfsausweise_wohnen.map(ausweis => ({
				...omit(ausweis, ["id", "aufnahme_id", "benutzer_id"]),
				uid_aufnahme: aufnahme.uid,
				uid_objekt: objekt.uid
			})),
			verbrauchsausweise_wohnen: 
			aufnahme.verbrauchsausweise_wohnen.map(ausweis => ({
				...omit(ausweis, ["id", "aufnahme_id", "benutzer_id"]),
				uid_aufnahme: aufnahme.uid,
				uid_objekt: objekt.uid
			})),
			verbrauchsausweise_gewerbe:
			aufnahme.verbrauchsausweise_gewerbe.map(ausweis => ({
				...omit(ausweis, ["id", "aufnahme_id", "benutzer_id"]),
				uid_aufnahme: aufnahme.uid,
				uid_objekt: objekt.uid
			})),
			uid_objekt: objekt.uid,
			bilder: aufnahme.bilder.map(bild => omit(bild, ["id", "aufnahme_id"])),
			unterlagen: aufnahme.unterlagen.map(unterlage => omit(unterlage, ["id", "aufnahme_id"]))
		}))
	}
}