"use client" import { useMemo } from "react" import { useAuth } from "@/lib/auth-context" import { TicketTable } from "@/components/tickets/ticket-table" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Building2, Ticket, Clock, CheckCircle2, AlertCircle } from "lucide-react" export function SupervisorDashboard() { const { user, tickets, updateTicketStatus } = useAuth() // user.supervisedRooms is Room[] const supervisedRooms = user?.supervisedRooms || [] const roomTickets = useMemo(() => { if (!supervisedRooms.length) return [] const roomIds = supervisedRooms.map(r => r.id) return tickets.filter((t) => roomIds.includes(t.room.id)) }, [tickets, supervisedRooms]) const stats = useMemo(() => { const open = roomTickets.filter((t) => t.status === "OPEN").length const inProgress = roomTickets.filter((t) => t.status === "IN_PROGRESS").length const done = roomTickets.filter((t) => t.status === "CLOSED").length return { open, inProgress, done, total: roomTickets.length } }, [roomTickets]) const roomStats = useMemo(() => { return supervisedRooms.map((room) => { const roomTicketsList = roomTickets.filter((t) => t.room.id === room.id) return { room: room.name, total: roomTicketsList.length, open: roomTicketsList.filter((t) => t.status === "OPEN").length, inProgress: roomTicketsList.filter((t) => t.status === "IN_PROGRESS").length, done: roomTicketsList.filter((t) => t.status === "CLOSED").length, } }) }, [supervisedRooms, roomTickets]) return (

Raumbetreuer Dashboard

Verwalten Sie Tickets für Ihre Räume

Total Tickets
{stats.total}
Offen
{stats.open}
In Bearbeitung
{stats.inProgress}
Erledigt
{stats.done}
Raumübersicht
Status der Tickets pro Raum
{roomStats.map((stat) => (

{stat.room}

{stat.open > 0 && ( {stat.open} Offen )} {stat.inProgress > 0 && ( {stat.inProgress} In Bearb. )} {stat.done > 0 && ( {stat.done} Fertig )} {stat.total === 0 && ( Keine Tickets )}
))}
Alle Raum-Tickets Verwalten Sie den Status der Tickets
) }