All Statement
History
{{-- Filters --}}
{{-- List --}}
@forelse($tx as $t)
@php
$rt = class_basename($t->related_type);
$rel = $t->related;
$isCredit = method_exists($t, 'isCredit') ? $t->isCredit() : ($t->type === 'credit');
// -------- meta safely decode --------
$rawMeta = $t->meta ?? [];
if (is_string($rawMeta)) {
$decoded = json_decode($rawMeta, true);
$meta = is_array($decoded) ? $decoded : [];
} elseif (is_array($rawMeta)) {
$meta = $rawMeta;
} else {
$meta = [];
}
$title = 'লেনদেন';
$subtitle = '';
$icon = '💸';
switch ($rt) {
case 'Deposit':
$title = 'ডিপোজিট';
$subtitle = $rel ? ('রেফ: '.$rel->reference.' • '.$rel->status) : '';
$icon = '📊';
break;
case 'Transfer':
$title = 'ট্রান্সফার';
$icon = '📤';
if ($rel) {
$who = $isCredit
? ($rel->fromUser->name ?? 'Unknown')
: ($rel->toUser->name ?? 'Unknown');
$subtitle = ($isCredit ? 'From: ' : 'To: ').$who;
}
break;
case 'Purchase':
$title = 'অফার পারচেজ';
$subtitle = $rel
? (($rel->offer->title ?? '').($rel->msisdn ? ' • '.$rel->msisdn : ''))
: '';
$icon = '🛒';
break;
case 'Recharge':
$title = 'মোবাইল রিচার্জ';
$subtitle = $rel ? ($rel->service_type.' • '.$rel->msisdn) : '';
$icon = '📶';
break;
case 'BillPayment':
$title = 'বিল পেমেন্ট';
$subtitle = $rel ? (($rel->biller->name ?? '').' • '.$rel->account_no) : '';
$icon = '🧾';
break;
case 'RewardConversion':
$title = 'রিওয়ার্ড';
$subtitle = $rel ? ('পয়েন্ট: '.$rel->points) : '';
$icon = '🏅';
break;
case 'MobileTransaction':
$title = 'মোবাইল ট্রান্সাকশন';
$subtitle = $rel ? ($rel->channel.' • '.$rel->account_number) : '';
$icon = '📲';
break;
case 'BankTransfer':
$title = 'ব্যাংক ট্রান্সফার';
$subtitle = $rel ? (($rel->bank->name ?? '').' • '.$rel->account_number) : '';
$icon = '🏦';
break;
case 'LoanApplication':
$title = 'লোন';
$subtitle = $rel ? ('মেয়াদ: '.$rel->loan_period.'মাস • '.$rel->status) : '';
$icon = '💳';
break;
}
// meta override / extras
$trxType = $meta['trx_type'] ?? null;
$title = $trxType ?: $title;
$statusText = $meta['status'] ?? ($rel->status ?? 'Success');
// এখানে ফিক্স: admin_note আগে নিয়ে আসছি
$adminNote = $meta['admin_note'] ?? ($rel->admin_note ?? '');
$charge = $meta['charge'] ?? 0;
// Last Number এ admin note দেখাবো; admin note না থাকলে পুরনো last_number/fallback
$lastNumber = $adminNote ?: ($meta['last_number'] ?? null);
$listDetails = $meta['details'] ?? (trim($subtitle) ?: 'N/A');
$duration = $meta['duration'] ?? '00:16';
// meta key/value গুলো string বানাচ্ছি (Details এর জন্য)
$metaPairs = [];
foreach ($meta as $k => $v) {
if ($v === null || $v === '') {
continue;
}
$label = ucwords(str_replace('_',' ', $k));
if (is_scalar($v)) {
$metaPairs[] = $label . ': ' . $v;
} else {
$metaPairs[] = $label . ': ' . json_encode($v, JSON_UNESCAPED_UNICODE);
}
}
// সব meta না থাকলে কমপক্ষে listDetails থাকুক
$metaText = $metaPairs ? implode(' • ', $metaPairs) : $listDetails;
// fallback last number (admin note না থাকলে + meta তেও না থাকলে)
if (!$lastNumber) {
if ($rt === 'BankTransfer' && $rel?->account_number) {
$digits = preg_replace('/\D/', '', $rel->account_number);
$lastNumber = $digits ? '****'.substr($digits, -4) : 'N/A';
} elseif ($rt === 'MobileTransaction' && $rel?->account_number) {
$digits = preg_replace('/\D/', '', $rel->account_number);
$lastNumber = $digits ? '****'.substr($digits, -4) : 'N/A';
} elseif ($rt === 'Recharge' && $rel?->msisdn) {
$digits = preg_replace('/\D/', '', $rel->msisdn);
$lastNumber = $digits ? '****'.substr($digits, -4) : 'N/A';
} else {
$lastNumber = 'N/A';
}
}
$rightBadge = $isCredit ? 'ক্রেডিট' : 'ডেবিট';
$rightBadgeClass = $isCredit ? 'bg-emerald-500/15 text-emerald-200'
: 'bg-rose-500/15 text-rose-200';
$accountNo = $authUser?->phone ?? $authUser?->email ?? 'N/A';
$newBalance = $t->balance_after ?? 0;
$oldBalance = $newBalance;
if ($t->balance_after !== null) {
$oldBalance = $isCredit
? $t->balance_after - $t->amount
: $t->balance_after + $t->amount;
}
@endphp
{{-- LIST ITEM --}}
@empty
এখনো কোনো হিস্টোরি নেই।
@endforelse
{{ $tx->links() }}