continued the kita-planer

This commit is contained in:
t.indorf
2026-05-08 14:32:14 +02:00
parent b686e714ff
commit 7aff691803
85 changed files with 9434 additions and 588 deletions
+40 -8
View File
@@ -13,7 +13,12 @@ const dutySchema = z.object({
});
export async function createDuty(rawPayload: unknown) {
const session = await requireRole([UserRole.ADMIN, UserRole.KOORDINATOR]);
const session = await requireRole([UserRole.ADMIN]);
const kitaId = session.user.kitaId;
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
const parsed = dutySchema.safeParse(rawPayload);
if (!parsed.success) {
@@ -23,7 +28,7 @@ export async function createDuty(rawPayload: unknown) {
try {
await prisma.parentDuty.create({
data: {
kitaId: session.user.kitaId!,
kitaId,
name: parsed.data.name,
description: parsed.data.description,
},
@@ -38,13 +43,17 @@ export async function createDuty(rawPayload: unknown) {
}
export async function deleteDuty(dutyId: string) {
const session = await requireRole([UserRole.ADMIN, UserRole.KOORDINATOR]);
const session = await requireRole([UserRole.ADMIN]);
const kitaId = session.user.kitaId;
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
try {
await prisma.parentDuty.delete({
where: {
id: dutyId,
kitaId: session.user.kitaId!,
kitaId,
},
});
revalidatePath("/dashboard/families");
@@ -57,9 +66,28 @@ export async function deleteDuty(dutyId: string) {
}
export async function assignDuty(userId: string, dutyId: string) {
const session = await requireRole([UserRole.ADMIN, UserRole.KOORDINATOR]);
const session = await requireRole([UserRole.ADMIN]);
const kitaId = session.user.kitaId;
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
try {
const [user, duty] = await Promise.all([
prisma.user.findFirst({
where: { id: userId, kitaId },
select: { id: true },
}),
prisma.parentDuty.findFirst({
where: { id: dutyId, kitaId },
select: { id: true },
}),
]);
if (!user || !duty) {
return { error: "Nutzer oder Amt gehört nicht zu dieser Kita." };
}
// Check if assignment already exists
const existing = await prisma.parentDutyAssignment.findUnique({
where: {
@@ -73,7 +101,7 @@ export async function assignDuty(userId: string, dutyId: string) {
await prisma.parentDutyAssignment.create({
data: {
kitaId: session.user.kitaId!,
kitaId,
userId: userId,
dutyId: dutyId,
},
@@ -89,13 +117,17 @@ export async function assignDuty(userId: string, dutyId: string) {
}
export async function removeDutyAssignment(assignmentId: string) {
const session = await requireRole([UserRole.ADMIN, UserRole.KOORDINATOR]);
const session = await requireRole([UserRole.ADMIN]);
const kitaId = session.user.kitaId;
if (!kitaId) {
return { error: "Kein Mandant zugeordnet." };
}
try {
await prisma.parentDutyAssignment.delete({
where: {
id: assignmentId,
kitaId: session.user.kitaId!,
kitaId,
},
});