Add educator leave management and working time accounts

This commit is contained in:
t.indorf
2026-10-07 15:25:55 +02:00
parent ec3f4f933d
commit 043fed2e46
19 changed files with 5631 additions and 200 deletions
+16 -8
View File
@@ -19,12 +19,12 @@ export async function createEducator(rawPayload: unknown) {
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
const parsed = educatorSchema.safeParse(rawPayload);
if (!parsed.success) {
return { error: "Ungültige Eingabedaten." };
}
try {
await prisma.educator.create({
data: {
@@ -34,7 +34,7 @@ export async function createEducator(rawPayload: unknown) {
active: parsed.data.active,
},
});
revalidatePath("/dashboard/erzieher");
return { success: true };
} catch (error) {
@@ -49,12 +49,12 @@ export async function updateEducator(id: string, rawPayload: unknown) {
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
const parsed = educatorSchema.safeParse(rawPayload);
if (!parsed.success) {
return { error: "Ungültige Eingabedaten." };
}
try {
await prisma.educator.update({
where: {
@@ -67,7 +67,7 @@ export async function updateEducator(id: string, rawPayload: unknown) {
active: parsed.data.active,
},
});
revalidatePath("/dashboard/erzieher");
return { success: true };
} catch (error) {
@@ -82,15 +82,23 @@ export async function deleteEducator(id: string) {
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
try {
const profile = await prisma.staffProfile.findFirst({
where: { educatorId: id, kitaId },
});
if (profile)
return {
error:
"Diese Fachkraft hat ein Personalprofil. Bitte auf inaktiv setzen, damit Zeiten und Konten erhalten bleiben.",
};
await prisma.educator.delete({
where: {
id,
kitaId,
},
});
revalidatePath("/dashboard/erzieher");
return { success: true };
} catch (error) {