import React from 'react'; import { supabaseAdmin } from '@/lib/supabase-admin'; import { format } from 'date-fns'; import { tr } from 'date-fns/locale'; import { CreditCard, Search, Filter, Download, Calendar } from 'lucide-react'; import Link from 'next/link'; import { cookies } from 'next/headers'; import { redirect } from 'next/navigation'; async function getMerchantTransactions(identifier: string) { const isUUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(identifier); const query = supabaseAdmin .from('merchants') .select('id') if (isUUID) { query.eq('id', identifier); } else { query.eq('short_id', identifier); } const { data: merchant } = await query.single(); if (!merchant) return null; const { data, error } = await supabaseAdmin .from('transactions') .select('*') .eq('merchant_id', merchant.id) .order('created_at', { ascending: false }); if (error) return null; return data; } export default async function MerchantTransactionsPage(props: { params: Promise<{ id: string }>; }) { const resolvedParams = await props.params; const identifier = resolvedParams.id; const transactions = await getMerchantTransactions(identifier); const cookieStore = await cookies(); if (!transactions) return
İşlemler yükleniyor...
; // Resolve merchant UUID briefly for auth check const isUUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(identifier); let resolvedId = identifier; if (!isUUID) { const { data: merchant } = await supabaseAdmin.from('merchants').select('id').eq('short_id', identifier).single(); if (merchant) resolvedId = merchant.id; } if (!cookieStore.get(`merchant_auth_${resolvedId}`)) { redirect(`/merchant/${identifier}/login`); } return (
{/* Header */}

İşlem Listesi

Tüm ödeme hareketleri

{/* Table */}
{transactions.map((t) => ( ))}
İşlem No Müşteri / Referans Tarih Tutar Durum Gateway
#{t.stripe_pi_id?.slice(-8).toUpperCase() || 'EXT-' + t.id.slice(0, 4)} {t.id.slice(0, 8)}
{t.customer_name || t.source_ref_id || 'SİSTEM'} {t.customer_phone || 'İletişim Yok'}
{format(new Date(t.created_at), 'dd MMM yyyy, HH:mm', { locale: tr })}
{Number(t.amount).toLocaleString('tr-TR', { minimumFractionDigits: 2 })} ₺ {t.status === 'succeeded' ? 'Başarılı' : t.status === 'failed' ? 'Hatalı' : 'Bekliyor'} {t.provider || 'STRIPE'}
{transactions.length === 0 && (

Henüz bir işlem kaydedilmemiş

)}
); }