import React, { useState, useEffect } from 'react'; import { useAuth } from '../context/AuthContext'; import onboardingService from '../services/onboardingService'; import offboardingService from '../services/offboardingService'; import userService from '../services/userService'; import assetService from '../services/assetService'; import onboardingProcessService from '../services/onboardingProcessService'; import ProcessManagementPage from './ProcessManagementPage'; import LoadingSpinner from '../components/common/LoadingSpinner'; import { toast } from 'react-toastify'; // ── Inline Prozess-Checkliste ───────────────────────────────────────────────── const TAG_COLORS = { critical: '#ef4444', important: '#f59e0b', normal: '#64748b' }; const TAG_LABELS = { critical: 'Kritisch', important: 'Wichtig', normal: 'Standard' }; const TEAM_COLORS = { it: '#3b82f6', hr: '#10b981', buchhaltung: '#8b5cf6' }; const TEAM_ICONS = { it: '💻', hr: '🧑💼', buchhaltung: '💶' }; const TEAM_LABELS = { it: 'IT', hr: 'HR / Personal', buchhaltung: 'Buchhaltung' }; const ProcessChecklist = ({ processes, checkedItems, onChange, disabled = false, userTeam = null }) => { if (!processes || processes.length === 0) { return
Keine Prozesse konfiguriert. Bitte unter ⚙️ Prozesse verwalten.
; } // Group by responsible_team const teams = ['it', 'hr', 'buchhaltung']; const teamMap = {}; teams.forEach(t => { teamMap[t] = []; }); processes.forEach(p => { if (teamMap[p.responsible_team]) teamMap[p.responsible_team].push(p); }); const totalItems = processes.length; const totalChecked = processes.filter(p => !!checkedItems[`proc_${p.id}`]).length; const totalPct = totalItems > 0 ? Math.round((totalChecked / totalItems) * 100) : 0; return (| Mitarbeiter | {dateLabel} | Status | Erstellt von | Aktionen | |
|---|---|---|---|---|---|
| Keine Protokolle vorhanden | |||||
|
{(p.emp_first_name || p.employee_sys_first_name || '')} {(p.emp_last_name || p.employee_sys_last_name || '')}
{p.emp_private_email || p.employee_email || p.department || ''}
|
{formatDate(p[dateKey])} |
{STATUS_LABEL[p.status] || p.status}
{p.employee_confirmed_at && (
✅ Bestätigt {formatDate(p.employee_confirmed_at)}
)}
{!p.employee_confirmed_at && p.confirm_token && (
⏳ Ausstehend
)}
|
{p.pdf_file_path ? : —} | {p.created_by_username} |
{onAction && }
{canDelete && }
|
On- und Offboarding-Protokolle verwalten