Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
import { db } from '@/lib/db'
|
|
import { visibleCaseWhere } from '@/lib/access/caseFilter'
|
|
import type { EffectivePermissions } from '@/lib/auth/permissions'
|
|
|
|
/**
|
|
* Vorschaukarten für Aktenzeichen im Chattext.
|
|
*
|
|
* **Serverseitig aufgelöst, mit der Stufe des Lesers.** Wer die Akte nicht
|
|
* sehen darf, bekommt eine neutrale Karte ohne Titel und ohne Status - nie den
|
|
* Titel mitschicken und im Client ausblenden. Siehe docs/06.
|
|
*
|
|
* Ob eine Akte existiert, verrät die Karte damit auch nicht: eine unbekannte
|
|
* und eine verborgene Akte sehen gleich aus.
|
|
*/
|
|
export type CasePreview =
|
|
| { caseNumber: string; visible: true; title: string; status: string; classification: number }
|
|
| { caseNumber: string; visible: false }
|
|
|
|
export async function resolveCasePreviews(
|
|
p: EffectivePermissions,
|
|
caseNumbers: string[],
|
|
): Promise<Map<string, CasePreview>> {
|
|
const eindeutig = [...new Set(caseNumbers)].slice(0, 50)
|
|
if (eindeutig.length === 0) return new Map()
|
|
|
|
const treffer = await db.case.findMany({
|
|
where: { AND: [visibleCaseWhere(p), { caseNumber: { in: eindeutig } }] },
|
|
select: { caseNumber: true, title: true, status: true, classification: true },
|
|
})
|
|
const sichtbar = new Map(treffer.map((akte) => [akte.caseNumber, akte]))
|
|
|
|
return new Map(
|
|
eindeutig.map((nummer) => {
|
|
const akte = sichtbar.get(nummer)
|
|
return [
|
|
nummer,
|
|
akte
|
|
? {
|
|
caseNumber: nummer,
|
|
visible: true as const,
|
|
title: akte.title,
|
|
status: akte.status,
|
|
classification: akte.classification,
|
|
}
|
|
: { caseNumber: nummer, visible: false as const },
|
|
]
|
|
}),
|
|
)
|
|
}
|