import type { KontaktAnrede } from '@prisma/client' /** * Die Briefanrede eines Ansprechpartners. * * Ein namentlich adressiertes Schreiben landet bei der Person, die den * Vorgang kennt, statt in der Poststelle. Beim Bezirk Oberfranken ist das * der Unterschied zwischen zwei Wochen und zwei Monaten. * * Zwei Regeln, die hier nicht verhandelbar sind: * * 1. Es wird nie geraten. Ohne hinterlegte Anrede wird mit dem vollen * Namen angeredet ("Sehr geehrte(r) Anna Schmitt,"). Eine falsch * geratene Anrede faellt dem Empfaenger sofort auf und kostet genau * die Aufmerksamkeit, die man gewinnen wollte. * 2. Ohne Ansprechpartner bleibt es bei "Sehr geehrte Damen und Herren,". * Ein halb gefuellter Name darf nie zu "Sehr geehrte Frau ," werden - * lieber unpersoenlich als offensichtlich automatisch. */ export const ANREDE_BESCHRIFTUNG: Record = { OHNE: 'keine Angabe', FRAU: 'Frau', HERR: 'Herr', } export const ALLGEMEINE_ANREDE = 'Sehr geehrte Damen und Herren,' /** * Der Nachname aus einem vollen Namen. * * Titel und Vornamen fallen weg: "Dr. Anna Schmitt" wird zu "Schmitt". * Doppelnamen mit Bindestrich bleiben ganz, weil sie ein Wort sind. */ export function nachnameAus(name: string): string { const teile = name.trim().split(/\s+/).filter(Boolean) return teile.length > 0 ? teile[teile.length - 1]! : '' } export type Ansprechpartner = { name: string anrede: KontaktAnrede } /** * Die Anredezeile fuer ein Schreiben, einschliesslich Komma. * * Ohne Ansprechpartner - oder mit einem, dessen Name leer ist - die * allgemeine Anrede. */ export function anredeZeile(ansprechpartner: Ansprechpartner | null): string { if (!ansprechpartner) return ALLGEMEINE_ANREDE const name = ansprechpartner.name.trim() if (!name) return ALLGEMEINE_ANREDE if (ansprechpartner.anrede === 'FRAU') return `Sehr geehrte Frau ${nachnameAus(name)},` if (ansprechpartner.anrede === 'HERR') return `Sehr geehrter Herr ${nachnameAus(name)},` return `Sehr geehrte(r) ${name},` }