Bookings/payments/linktree: fix payment method display, event filter, logo, search

- Bookings: align payment method labels with payments page (bank_transfer, tpago, etc), add sibling fallback
- Payments: add event filter (single/multi), add search by name/email/event
- Linktree: use Spanglish logo instead of icon
- API: payments getAll supports eventId/eventIds

Made-with: Cursor
This commit is contained in:
Michilis
2026-03-07 18:06:35 +00:00
parent bbfaa1172a
commit 25b7018743
5 changed files with 159 additions and 31 deletions

View File

@@ -154,12 +154,23 @@ export default function AdminBookingsPage() {
};
const getPaymentMethodLabel = (provider: string) => {
switch (provider) {
case 'bancard': return 'TPago / Card';
case 'lightning': return 'Bitcoin Lightning';
case 'cash': return 'Cash at Event';
default: return provider;
const labels: Record<string, string> = {
cash: locale === 'es' ? 'Efectivo en el Evento' : 'Cash at Event',
bank_transfer: locale === 'es' ? 'Transferencia Bancaria' : 'Bank Transfer',
lightning: 'Lightning',
tpago: 'TPago',
bancard: 'Bancard',
};
return labels[provider] || provider;
};
const getDisplayProvider = (ticket: TicketWithDetails) => {
if (ticket.payment?.provider) return ticket.payment.provider;
if (ticket.bookingId) {
const sibling = tickets.find(t => t.bookingId === ticket.bookingId && t.payment?.provider);
return sibling?.payment?.provider ?? 'cash';
}
return 'cash';
};
const filteredTickets = tickets.filter((ticket) => {
@@ -394,7 +405,7 @@ export default function AdminBookingsPage() {
<span className={`inline-block px-2 py-0.5 rounded-full text-xs font-medium ${getPaymentStatusColor(ticket.payment?.status || 'pending')}`}>
{ticket.payment?.status || 'pending'}
</span>
<p className="text-xs text-gray-500 mt-0.5">{getPaymentMethodLabel(ticket.payment?.provider || 'cash')}</p>
<p className="text-xs text-gray-500 mt-0.5">{getPaymentMethodLabel(getDisplayProvider(ticket))}</p>
{ticket.payment && (
<p className="text-xs font-medium mt-0.5">{bookingInfo.bookingTotal.toLocaleString()} {ticket.payment.currency}</p>
)}