import { z } from "zod";
import { TicketsSchema, prisma } from "#lib/server/prisma.js";
import { defineApiRoute } from "astro-typesafe-api/server";
import { UUidWithPrefix } from "#components/Ausweis/types.js";

export const PUT = defineApiRoute({
	meta: {
		contentTypes: ["application/json"],
		description:
			"Erstellt ein neues Support Ticket und weist den Ersteller diesem zu, falls ein Authorization Header mitgegeben wurde.",
		summary: "Erstellt ein neues Support Ticket.",
		tags: ["Tickets"],
	},
	input: TicketsSchema.omit({
		bearbeiter_id: true,
		benutzer_id: true,
		created_at: true,
		deleted_at: true,
		id: true,
		prioritaet: true,
		status: true,
		uid: true,
		updated_at: true,
	}),
	output: z.object({
		uid: UUidWithPrefix,
	}),
	async fetch(input, ctx) {
		const ticket = await prisma.tickets.create({
			data: {
				beschreibung: input.beschreibung,
				email: input.email,
				titel: input.titel,
				metadata: input.metadata,
			},
			select: {
				uid: true,
			},
		});

		return {
			uid: ticket.uid,
		};
	},
});
