import React, { useState, useEffect } from 'react'; import { Icons } from './IconSet'; interface EmployeeManagementModalProps { isOpen: boolean; onClose: () => void; projectId: string; onUpdate: () => void; } const EmployeeManagementModal: React.FC = ({ isOpen, onClose, projectId, onUpdate }) => { const [employees, setEmployees] = useState([]); const [availablePlayers, setAvailablePlayers] = useState([]); const [loading, setLoading] = useState(false); const [selectedPlayer, setSelectedPlayer] = useState(''); const [error, setError] = useState(null); useEffect(() => { if (isOpen && projectId) { loadEmployees(); loadAvailablePlayers(); } }, [isOpen, projectId]); const loadEmployees = async () => { try { const response = await fetch(`https://vollidioten.ceraticsoft.de/api/projects/${projectId}/employees`); if (response.ok) { const data = await response.json(); setEmployees(data); } } catch (err) { console.error('Error loading employees:', err); } }; const loadAvailablePlayers = async () => { try { const response = await fetch('https://vollidioten.ceraticsoft.de/api/players'); if (response.ok) { const players = await response.json(); // Filter out players who are already employees const available = players.filter((player: any) => !employees.includes(player.username) ); setAvailablePlayers(available); } } catch (err) { console.error('Error loading available players:', err); } }; const addEmployee = async () => { if (!selectedPlayer) return; try { setLoading(true); setError(null); const response = await fetch(`https://vollidioten.ceraticsoft.de/api/projects/${projectId}/employees`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ employeeName: selectedPlayer }) }); if (response.ok) { await loadEmployees(); setSelectedPlayer(''); onUpdate(); } else { const errorData = await response.json(); setError(errorData.error || 'Fehler beim Hinzufügen'); } } catch (err) { console.error('Error adding employee:', err); setError('Netzwerkfehler'); } finally { setLoading(false); } }; const removeEmployee = async (employeeName: string) => { try { setLoading(true); const response = await fetch(`https://vollidioten.ceraticsoft.de/api/projects/${projectId}/employees/${employeeName}`, { method: 'DELETE', credentials: 'include' }); if (response.ok) { await loadEmployees(); onUpdate(); } else { setError('Fehler beim Entfernen'); } } catch (err) { console.error('Error removing employee:', err); setError('Netzwerkfehler'); } finally { setLoading(false); } }; if (!isOpen) return null; return (

Mitarbeiter verwalten

{error && (

{error}

)} {/* Add Employee */}

Mitarbeiter hinzufügen

{/* Current Employees */}

Aktuelle Mitarbeiter ({employees.length})

{employees.length === 0 ? (

Noch keine Mitarbeiter hinzugefügt.

) : (
{employees.map((employee) => (
{employee.charAt(0).toUpperCase()}
{employee}
))}
)}
); }; export default EmployeeManagementModal;