import React from 'react'; import { db } from '@/lib/db'; 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 mQueryText = isUUID ? 'SELECT id FROM merchants WHERE id = $1 LIMIT 1' : 'SELECT id FROM merchants WHERE short_id = $1 LIMIT 1'; const mResult = await db.query(mQueryText, [identifier]); const merchant = mResult.rows[0]; if (!merchant) return null; const tResult = await db.query( 'SELECT * FROM transactions WHERE merchant_id = $1 ORDER BY created_at DESC', [merchant.id] ); return tResult.rows; } 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 result = await db.query('SELECT id FROM merchants WHERE short_id = $1 LIMIT 1', [identifier]); const merchant = result.rows[0]; 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ş

)}
); }