@extends('layouts.app') @section('title','History') @push('styles') {{-- Same fonts & blob animation as অন্য পেজগুলো --}} @endpush @section('content') @php $authUser = auth()->user(); @endphp
{{-- animated blobs --}}
{{-- top nav + All Statement button --}}
{{-- glass card --}}
{{-- Filters --}}
🔎 @if($q) @endif
@if(request()->hasAny(['q','type','kind']) && (request('q') || request('type') || request('kind'))) রিসেট @endif
{{-- 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() }}
{{-- Backdrop --}} {{-- Bottom-sheet / Center modal (responsive) --}} {{-- JS --}} @endsection