import { useState } from 'react' import { useQuery } from '@tanstack/react-query' import { api } from '@/lib/api-client' import { usePOSStore } from '@/stores/pos.store' import type { RepairTicket } from '@/types/repair' import type { PaginatedResponse } from '@lunarfront/shared/schemas' import { RepairWorkbench } from './repair-workbench' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' import { Badge } from '@/components/ui/badge' import { Wrench } from 'lucide-react' const STATUS_LABELS: Record = { new: 'New', intake: 'Intake', diagnosing: 'Diagnosing', pending_approval: 'Pending', approved: 'Approved', in_progress: 'In Progress', pending_parts: 'Parts', ready: 'Ready', } export function RepairTechView() { const cashier = usePOSStore((s) => s.cashier) const [selectedTicketId, setSelectedTicketId] = useState(null) // Fetch tickets assigned to current user (active statuses only) const { data } = useQuery({ queryKey: ['repair-tickets', 'tech-assigned', cashier?.id], queryFn: () => api.get>('/v1/repair-tickets', { page: 1, limit: 50, sort: 'created_at', order: 'asc', q: undefined, // Filter to active statuses — the API will return all if no status filter, we filter client-side }), enabled: !!cashier?.id, staleTime: 15_000, refetchInterval: 30_000, }) // Filter to tickets assigned to this technician in active statuses const activeStatuses = ['diagnosing', 'pending_approval', 'approved', 'in_progress', 'pending_parts', 'ready'] const myTickets = (data?.data ?? []).filter(t => t.assignedTechnicianId === cashier?.id && activeStatuses.includes(t.status) ) // Auto-select first ticket if (!selectedTicketId && myTickets.length > 0) { setSelectedTicketId(myTickets[0].id) } if (myTickets.length === 0) { return (

No assigned tickets

Tickets assigned to you will appear here

) } return (
{/* Ticket selector */} {myTickets.length > 1 && (
Ticket: {myTickets.length} active
)} {/* Workbench */}
{selectedTicketId && }
) }