import { Permission } from '../auth/permissions.enum'; /** Paperless-Tag, der ein Dokument als „im Posteingang“ kennzeichnet. */ export const POSTEINGANG_TAG_ID = 1; /** * Darf der Benutzer dieses Paperless-Dokument über die Posteingangs-Maske * bearbeiten? Der Backend-Service-Token umgeht die Paperless-Rechte, deshalb * wird hier pro Dokument geprüft: Posteingang-Rolle nur für Dokumente mit * Posteingang-Tag, Buchhaltung nur für Dokumente mit Manuell-Tag. */ export function darfDokumentBearbeiten( tags: number[] | undefined, permissions: Permission[], manuellTagId: number, ): boolean { if (permissions.includes(Permission.MANAGE_ALL)) return true; const vorhanden = new Set((tags ?? []).map(Number)); return ( (vorhanden.has(POSTEINGANG_TAG_ID) && permissions.includes(Permission.VIEW_INBOX)) || (vorhanden.has(manuellTagId) && permissions.includes(Permission.PROCESS_MANUALLY)) ); } export interface DokumentKurzinfo { id: number; title: string; archive_serial_number: number | null; created: string; } /** * Für Suche und Verknüpfungsanzeige genügen Kennung, Titel, ASN und Datum. * Das vollständige Paperless-Dokument enthält u.a. den OCR-Volltext und * Statusfelder – die sollen über diese Routen nicht abrufbar sein. */ export function dokumentKurzinfo(doc: { id: number; title: string; archive_serial_number?: number | null; created: string; }): DokumentKurzinfo { return { id: doc.id, title: doc.title, archive_serial_number: doc.archive_serial_number ?? null, created: doc.created, }; }