feat(protokoll): Protokoll ansehen, mit Filtern und Mandantensicht (#45)
This commit was merged in pull request #45.
This commit is contained in:
@@ -568,7 +568,7 @@ async function abschlussSchreiben(
|
||||
uebersprungen: number,
|
||||
): Promise<void> {
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.verzeichnisquelle.update({
|
||||
const quelle = await tx.verzeichnisquelle.update({
|
||||
where: { id: quelleId },
|
||||
data: {
|
||||
letzterAbgleichAm: new Date(),
|
||||
@@ -578,6 +578,9 @@ async function abschlussSchreiben(
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
// Aus der Aktualisierung, nicht aus einer zweiten Abfrage: der Kunde
|
||||
// steht in derselben Zeile, die gerade geschrieben wurde (#023).
|
||||
kundeId: quelle.kundeId,
|
||||
entitaet: "Verzeichnisquelle",
|
||||
entitaetId: quelleId,
|
||||
aktion:
|
||||
|
||||
@@ -100,6 +100,7 @@ export async function abteilungAnlegen(
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: abteilung.kundeId,
|
||||
entitaet: "Abteilung",
|
||||
entitaetId: abteilung.id,
|
||||
aktion: "Abteilung angelegt",
|
||||
@@ -169,6 +170,7 @@ export async function abteilungBearbeiten(
|
||||
const nachher = await tx.abteilung.update({ where: { id: abteilungId }, data: daten });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Abteilung",
|
||||
entitaetId: abteilungId,
|
||||
aktion: `${geaendert.join(" und ")} geändert`,
|
||||
@@ -202,6 +204,7 @@ export async function abteilungArchivieren(
|
||||
const nachher = await tx.abteilung.update({ where: { id: abteilungId }, data: { archiviert } });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Abteilung",
|
||||
entitaetId: abteilungId,
|
||||
aktion: archiviert ? "Abteilung archiviert" : "Abteilung wieder freigegeben",
|
||||
|
||||
@@ -81,6 +81,7 @@ export async function einstellungenSpeichern(
|
||||
await prisma.kunde.update({ where: { id: vorher.eigeneOrganisation.id }, data: { name } });
|
||||
await prisma.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.eigeneOrganisation.id,
|
||||
entitaet: "Kunde",
|
||||
entitaetId: vorher.eigeneOrganisation.id,
|
||||
aktion: "Name der eigenen Organisation geändert",
|
||||
|
||||
@@ -197,6 +197,7 @@ async function geraetSchreiben(auftrag: SchreibAuftrag): Promise<Geraet> {
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: geraet.kundeId,
|
||||
entitaet: "Geraet",
|
||||
entitaetId: geraet.id,
|
||||
aktion: auftrag.aktion,
|
||||
@@ -314,6 +315,7 @@ export async function geraetBearbeiten(
|
||||
const nachher = await tx.geraet.update({ where: { id: geraetId }, data: daten });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Geraet",
|
||||
entitaetId: geraetId,
|
||||
aktion: `${geaendert.join(" und ")} geändert`,
|
||||
@@ -371,6 +373,7 @@ export async function geraetArchivieren(
|
||||
await tx.geraet.update({ where: { id: geraetId }, data: { archiviert } });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: geraet.kundeId,
|
||||
entitaet: "Geraet",
|
||||
entitaetId: geraetId,
|
||||
aktion: archiviert ? "Gerät archiviert" : "Gerät wieder freigegeben",
|
||||
@@ -418,6 +421,7 @@ export async function geraetLoeschen(geraetId: string, benutzer: HandelnderBenut
|
||||
await tx.geraet.delete({ where: { id: geraetId } });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: geraet.kundeId,
|
||||
entitaet: "Geraet",
|
||||
entitaetId: geraetId,
|
||||
aktion: "Gerät gelöscht",
|
||||
|
||||
@@ -114,6 +114,7 @@ export async function kundeAnlegen(eingabe: NeuerKunde, durchBenutzerId: string)
|
||||
|
||||
await prisma.protokoll.create({
|
||||
data: {
|
||||
kundeId: kunde.id,
|
||||
entitaet: "Kunde",
|
||||
entitaetId: kunde.id,
|
||||
aktion: "Kunde angelegt",
|
||||
@@ -181,6 +182,7 @@ export async function kundeBearbeiten(
|
||||
|
||||
await prisma.protokoll.create({
|
||||
data: {
|
||||
kundeId: id,
|
||||
entitaet: "Kunde",
|
||||
entitaetId: id,
|
||||
aktion: `${felder.map((feld) => FELD_TEXT[feld]).join(" und ")} geändert`,
|
||||
@@ -215,6 +217,7 @@ export async function kundeArchivieren(
|
||||
await prisma.kunde.update({ where: { id }, data: { archiviert } });
|
||||
await prisma.protokoll.create({
|
||||
data: {
|
||||
kundeId: id,
|
||||
entitaet: "Kunde",
|
||||
entitaetId: id,
|
||||
aktion: archiviert ? "Kunde archiviert" : "Kunde wieder freigegeben",
|
||||
|
||||
@@ -131,6 +131,7 @@ export async function mitarbeiterAnlegen(
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: mitarbeiter.kundeId,
|
||||
entitaet: "Mitarbeiter",
|
||||
entitaetId: mitarbeiter.id,
|
||||
aktion: vermerk?.aktion ?? "Mitarbeiter angelegt",
|
||||
@@ -200,6 +201,7 @@ export async function mitarbeiterBearbeiten(
|
||||
const nachher = await tx.mitarbeiter.update({ where: { id: mitarbeiterId }, data: daten });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Mitarbeiter",
|
||||
entitaetId: mitarbeiterId,
|
||||
aktion: `${geaendert.join(" und ")} geändert`,
|
||||
@@ -260,6 +262,7 @@ export async function vorgesetztenSetzen(
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Mitarbeiter",
|
||||
entitaetId: mitarbeiterId,
|
||||
aktion: gewuenscht === null ? "Vorgesetzter entfernt" : `Vorgesetzter auf ${name} gesetzt`,
|
||||
@@ -321,6 +324,7 @@ export async function mitarbeiterAktivSetzen(
|
||||
const nachher = await tx.mitarbeiter.update({ where: { id: mitarbeiterId }, data: { aktiv } });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Mitarbeiter",
|
||||
entitaetId: mitarbeiterId,
|
||||
aktion: aktiv ? "Mitarbeiter wieder aktiviert" : "Mitarbeiter deaktiviert",
|
||||
|
||||
@@ -210,6 +210,7 @@ export async function quelleAnlegen(
|
||||
});
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: angelegt.kundeId,
|
||||
entitaet: "Verzeichnisquelle",
|
||||
entitaetId: angelegt.id,
|
||||
aktion: "Verzeichnisquelle angelegt",
|
||||
@@ -316,6 +317,7 @@ export async function quelleBearbeiten(
|
||||
const nachher = await tx.verzeichnisquelle.update({ where: { id }, data: daten });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorher.kundeId,
|
||||
entitaet: "Verzeichnisquelle",
|
||||
entitaetId: id,
|
||||
aktion: `${geaendert.join(", ")} geändert`,
|
||||
@@ -354,6 +356,7 @@ export async function quelleLoeschen(id: string, benutzer: HandelnderBenutzer):
|
||||
await tx.verzeichnisquelle.delete({ where: { id } });
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: quelle.kundeId,
|
||||
entitaet: "Verzeichnisquelle",
|
||||
entitaetId: id,
|
||||
aktion: "Verzeichnisquelle gelöscht",
|
||||
|
||||
@@ -177,6 +177,7 @@ export async function vorlageImportieren(
|
||||
|
||||
await tx.protokoll.create({
|
||||
data: {
|
||||
kundeId: vorlage.kundeId,
|
||||
entitaet: "Vorlage",
|
||||
entitaetId: vorlage.id,
|
||||
aktion: "Vorlage importiert",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user