feat: complete notdienst planning, quick wins and notifications
This commit is contained in:
@@ -12,6 +12,8 @@ import {
|
||||
} from "@/lib/child-birthdate";
|
||||
import { serializableTransaction } from "@/lib/transaction";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { assertChildrenRemovable } from "@/lib/notdienst-planning";
|
||||
import { UserFacingError, publicActionError } from "@/lib/action-error";
|
||||
|
||||
// Telefonnummern: führendes "+" optional, dann Ziffern, Leerzeichen, Bindestriche,
|
||||
// Klammern oder Schrägstriche. Mindestens 6 Ziffern damit es plausibel ist.
|
||||
@@ -268,26 +270,25 @@ export async function deleteMyChild(childId: string) {
|
||||
const session = await requireKitaSession();
|
||||
|
||||
try {
|
||||
const child = await requireOwnFamilyChild(
|
||||
childId,
|
||||
session.user.familyId,
|
||||
session.user.kitaId,
|
||||
);
|
||||
|
||||
if (!child) {
|
||||
return { error: "Dieses Kind gehört nicht zu deinem Haushalt." };
|
||||
}
|
||||
|
||||
await prisma.child.delete({
|
||||
where: { id: childId, kitaId: session.user.kitaId, familyId: session.user.familyId! },
|
||||
await serializableTransaction(async (tx) => {
|
||||
if (!session.user.familyId) throw new UserFacingError("Dieses Kind gehört nicht zu deinem Haushalt.");
|
||||
const child = await tx.child.findFirst({
|
||||
where: { id: childId, kitaId: session.user.kitaId, familyId: session.user.familyId },
|
||||
select: { id: true },
|
||||
});
|
||||
if (!child) throw new UserFacingError("Dieses Kind gehört nicht zu deinem Haushalt.");
|
||||
await assertChildrenRemovable(tx, session.user.kitaId, session.user.familyId, [childId]);
|
||||
await tx.child.delete({
|
||||
where: { id: childId, kitaId: session.user.kitaId, familyId: session.user.familyId },
|
||||
});
|
||||
});
|
||||
|
||||
revalidatePath("/dashboard/profil");
|
||||
revalidatePath("/dashboard/families");
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Entfernen des Kindes:", error);
|
||||
return { error: "Das Kind konnte nicht entfernt werden." };
|
||||
if (!(error instanceof UserFacingError)) console.error("Fehler beim Entfernen des Kindes:", error);
|
||||
return { error: publicActionError(error, "Das Kind konnte nicht entfernt werden.") };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user