feat(protokoll): Protokoll ansehen, mit Filtern und Mandantensicht (#45)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #45.
This commit is contained in:
2026-10-04 16:06:26 +00:00
parent f5936327a0
commit e1f244e4e8
23 changed files with 1103 additions and 22 deletions
+21 -2
View File
@@ -61,6 +61,7 @@ export async function vorlageAnlegen(
});
await tx.protokoll.create({
data: {
kundeId: vorlage.kundeId,
entitaet: "Vorlage",
entitaetId: vorlage.id,
aktion: "Vorlage angelegt",
@@ -147,6 +148,7 @@ export async function vorlageBearbeiten(
const nachher = await tx.vorlage.update({ where: { id: vorlageId }, data: daten });
await tx.protokoll.create({
data: {
kundeId: nachher.kundeId,
entitaet: "Vorlage",
entitaetId: vorlageId,
aktion: `${geaendert.join(" und ")} geändert`,
@@ -263,6 +265,12 @@ async function entwurfKopieren(
durchBenutzerId: string,
): Promise<VorlagenVersion> {
return prisma.$transaction(async (tx) => {
// Der Kunde fuer den Protokolleintrag; ein indizierter Lesevorgang auf dem
// Primaerschluessel (#023).
const vorlage = await tx.vorlage.findUniqueOrThrow({
where: { id: vorlageId },
select: { kundeId: true },
});
const entwurf = await tx.vorlagenVersion.create({
data: { vorlageId, version: naechste, status: VersionStatus.ENTWURF },
});
@@ -304,6 +312,7 @@ async function entwurfKopieren(
await tx.protokoll.create({
data: {
kundeId: vorlage.kundeId,
entitaet: "VorlagenVersion",
entitaetId: entwurf.id,
aktion: "Entwurf aus veröffentlichter Version erstellt",
@@ -485,7 +494,7 @@ export async function versionVeroeffentlichen(
const kopf = await tx.vorlagenVersion.findUniqueOrThrow({
where: { id: versionId },
select: {
vorlage: { select: { archiviert: true, name: true } },
vorlage: { select: { archiviert: true, name: true, kundeId: true } },
_count: { select: { abschnitte: true } },
},
});
@@ -518,6 +527,7 @@ export async function versionVeroeffentlichen(
await tx.protokoll.create({
data: {
kundeId: kopf.vorlage.kundeId,
entitaet: "VorlagenVersion",
entitaetId: versionId,
aktion: "Version veröffentlicht",
@@ -545,7 +555,13 @@ export async function versionVeroeffentlichen(
export async function entwurfVerwerfen(versionId: string, durchBenutzerId: string): Promise<void> {
const version = await prisma.vorlagenVersion.findUnique({
where: { id: versionId },
select: { id: true, status: true, version: true, vorlageId: true },
select: {
id: true,
status: true,
version: true,
vorlageId: true,
vorlage: { select: { kundeId: true } },
},
});
if (!version) throw new VorlagenFehler("Diese Version gibt es nicht.");
versionMussEntwurfSein(version);
@@ -563,6 +579,7 @@ export async function entwurfVerwerfen(versionId: string, durchBenutzerId: strin
await tx.vorlagenVersion.delete({ where: { id: versionId } });
await tx.protokoll.create({
data: {
kundeId: version.vorlage.kundeId,
entitaet: "VorlagenVersion",
entitaetId: versionId,
aktion: "Entwurf verworfen",
@@ -661,6 +678,7 @@ export async function vorlageDuplizieren(
await tx.protokoll.create({
data: {
kundeId: kopie.kundeId,
entitaet: "Vorlage",
entitaetId: kopie.id,
aktion: "Vorlage dupliziert",
@@ -693,6 +711,7 @@ export async function vorlageArchivieren(
await tx.vorlage.update({ where: { id: vorlageId }, data: { archiviert } });
await tx.protokoll.create({
data: {
kundeId: vorlage.kundeId,
entitaet: "Vorlage",
entitaetId: vorlageId,
aktion: archiviert ? "Vorlage archiviert" : "Vorlage wieder freigegeben",