"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { cn, formatCurrency } from "@/lib/utils"; interface Client { id: string; firstName: string; lastName: string; email: string | null; phone: string | null; level: string | null; } interface Inscription { id: string; clientId: string; partnerId: string | null; teamName: string | null; seedNumber: number | null; isPaid: boolean; paidAmount: number; registeredAt: string; client: Client; partner?: Client | null; } interface InscriptionsListProps { inscriptions: Inscription[]; entryFee: number; onRemove?: (inscriptionId: string) => Promise; onTogglePaid?: (inscriptionId: string, isPaid: boolean) => Promise; canEdit?: boolean; } export function InscriptionsList({ inscriptions, entryFee, onRemove, onTogglePaid, canEdit = false, }: InscriptionsListProps) { const [loadingId, setLoadingId] = useState(null); const handleRemove = async (inscriptionId: string) => { if (!onRemove) return; if (!confirm("¿Estas seguro de eliminar esta inscripcion?")) return; setLoadingId(inscriptionId); try { await onRemove(inscriptionId); } finally { setLoadingId(null); } }; const handleTogglePaid = async (inscription: Inscription) => { if (!onTogglePaid) return; setLoadingId(inscription.id); try { await onTogglePaid(inscription.id, !inscription.isPaid); } finally { setLoadingId(null); } }; const getTeamName = (inscription: Inscription): string => { if (inscription.teamName) return inscription.teamName; const p1 = `${inscription.client.firstName} ${inscription.client.lastName}`; if (inscription.partner) { return `${p1} / ${inscription.partner.firstName} ${inscription.partner.lastName}`; } return p1; }; const getPlayerNames = (inscription: Inscription): string => { const p1 = `${inscription.client.firstName} ${inscription.client.lastName}`; if (inscription.partner) { return `${p1}, ${inscription.partner.firstName} ${inscription.partner.lastName}`; } return p1; }; const paidCount = inscriptions.filter((i) => i.isPaid).length; const totalCollected = inscriptions .filter((i) => i.isPaid) .reduce((sum, i) => sum + (i.paidAmount || entryFee), 0); if (inscriptions.length === 0) { return (

No hay inscripciones todavia

Abre las inscripciones para recibir equipos

); } return (
{/* Summary */}

Total Equipos

{inscriptions.length}

Pagados

{paidCount} / {inscriptions.length}

Recaudado

{formatCurrency(totalCollected)}

{/* Table */}
{canEdit && ( )} {inscriptions.map((inscription, index) => ( {canEdit && ( )} ))}
# Equipo / Jugadores Contacto Estado Pago Acciones
{inscription.seedNumber || index + 1}

{getTeamName(inscription)}

{getPlayerNames(inscription)}

{inscription.client.email && (

{inscription.client.email}

)} {inscription.client.phone && (

{inscription.client.phone}

)}
); }