// Getrennt von models/Client.ts, damit Client-Komponenten diese Konstanten
// importieren können, ohne Mongoose in den Browser-Bundle zu ziehen (gleiches
// Muster wie lib/permissions.ts).
//
// Zwei echte Beschäftigungsarten (employee/team_member/intern/apprentice) plus
// zwei Ereignis-Einträge (termination/note), die keine laufende Beschäftigung
// beschreiben, sondern einzelne Vorkommnisse in der Personalakte dokumentieren
// — bewusst im selben "type"-Feld, damit sie chronologisch in derselben Liste
// erscheinen, statt eine zweite, getrennte Historie zu brauchen.
export const EMPLOYMENT_TYPES = ["employee", "team_member", "intern", "apprentice", "termination", "note"] as const;
export type EmploymentType = (typeof EMPLOYMENT_TYPES)[number];

export const EMPLOYMENT_TYPE_LABELS: Record<EmploymentType, string> = {
  employee: "Mitarbeiter (fest angestellt)",
  team_member: "Teamler (freie Mitarbeit)",
  intern: "Praktikant:in",
  apprentice: "Azubi",
  termination: "Kündigung",
  note: "Notiz",
};

export const EMPLOYMENT_TYPE_COLORS: Record<EmploymentType, string> = {
  employee: "#34d399",
  team_member: "#38bdf8",
  intern: "#fbbf24",
  apprentice: "#a78bfa",
  termination: "#f87171",
  note: "#94a3b8",
};

// Nur für type === "termination" relevant.
export const TERMINATION_TYPES = ["employer_ordinary", "employer_immediate", "employee", "mutual"] as const;
export type TerminationType = (typeof TERMINATION_TYPES)[number];

export const TERMINATION_TYPE_LABELS: Record<TerminationType, string> = {
  employer_ordinary: "Ordentliche Kündigung (durch Arbeitgeber)",
  employer_immediate: "Fristlose Kündigung (durch Arbeitgeber)",
  employee: "Eigenkündigung (durch Arbeitnehmer)",
  mutual: "Aufhebungsvertrag",
};

// Wer eine Probezeit haben kann — Azubis haben laut § 20 BBiG ebenso eine
// Probezeit (1–4 Monate) wie fest angestellte Mitarbeiter:innen, Praktikant:in/
// Teamler/Kündigung/Notiz nicht (befristet bzw. kein laufendes Verhältnis).
export const PROBATION_ELIGIBLE_TYPES = ["employee", "apprentice"] as const;

export function probationEndDate(startDate: Date, probationMonths: number): Date {
  const end = new Date(startDate);
  end.setMonth(end.getMonth() + probationMonths);
  return end;
}

// Startpunkte für die Onboarding-Checkliste (Client.onboardingChecklist) —
// analog zu DEFAULT_CHECKLIST_ITEMS für Aufträge in orderConstants.ts, wird
// beim ersten Beschäftigungs-Eintrag eines neuen Teammitglieds vorbefüllt.
export const DEFAULT_ONBOARDING_CHECKLIST_ITEMS = [
  "Zugang zum Admin-Dashboard eingerichtet",
  "Berechtigungen/Position zugewiesen",
  "Team-Kanäle/Intranet gezeigt",
  "Ablaufdokumente/Richtlinien durchgegangen",
  "Erste Aufgabe/Auftrag zur Einarbeitung übergeben",
];
