import { useState, useEffect, useCallback } from 'react'; import { databases, DATABASE_ID } from '@/lib/appwrite'; import { Query } from 'appwrite'; import { useLagerstandorte } from '@/hooks/useLagerstandorte'; import LagerstandortManager from './LagerstandortManager'; import UserAssignDialog from './UserAssignDialog'; import UserCreateForm from './UserCreateForm'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Separator } from '@/components/ui/separator'; import { AlertCircle } from 'lucide-react'; const ROLE_LABELS = { admin: 'Admin', firmenleiter: 'Firmenleiter', filialleiter: 'Filialleiter', service: 'Service', lager: 'Lager', }; export default function FilialDetail({ location: loc, onClose, showToast, onUserAdded }) { const [users, setUsers] = useState([]); const [showAssignDialog, setShowAssignDialog] = useState(false); const [showUserForm, setShowUserForm] = useState(false); const [showLsManager, setShowLsManager] = useState(false); const { lagerstandorte, addLagerstandort, toggleLagerstandort, deleteLagerstandort } = useLagerstandorte(loc?.$id || ''); const loadUsers = useCallback(async () => { if (!loc?.$id) return; try { const res = await databases.listDocuments(DATABASE_ID, 'users_meta', [ Query.equal('locationId', [loc.$id]), Query.limit(200), ]); setUsers(res.documents); } catch (err) { console.error('Benutzer laden fehlgeschlagen:', err); } }, [loc?.$id]); useEffect(() => { loadUsers(); }, [loadUsers]); const hasFilialleiter = users.some((u) => u.role === 'filialleiter'); return (

Details: {loc?.name}

{!hasFilialleiter && (
Filialleiter fehlt
)}
Lagerstandorte
{lagerstandorte.length === 0 ? (

Keine Lagerstandorte

) : ( lagerstandorte.map((ls) => (
{ls.name} {ls.isActive ? 'Aktiv' : 'Inaktiv'}
)) )}
Benutzer dieser Filiale
{users.length === 0 ? (

Keine Benutzer

) : ( users.map((u) => (
{u.userName || u.userId} {ROLE_LABELS[u.role] || u.role}
)) )}
{showLsManager && ( setShowLsManager(false)} /> )} {showAssignDialog && ( setShowAssignDialog(false)} onSuccess={() => { loadUsers(); setShowAssignDialog(false); onUserAdded?.(); }} showToast={showToast} /> )} {showUserForm && ( { loadUsers(); setShowUserForm(false); onUserAdded?.(); }} onCancel={() => setShowUserForm(false)} showToast={showToast} /> )}
); }