filters = $filters; } public function query() { $query = WalletTransaction::query() ->with(['wallet.user', 'creator', 'approver']) ->orderByDesc('created_at'); if (!empty($this->filters['type'])) { $query->where('type', $this->filters['type']); } if (!empty($this->filters['status'])) { $query->where('status', $this->filters['status']); } if (!empty($this->filters['gateway'])) { $query->where('gateway', $this->filters['gateway']); } if (!empty($this->filters['from_date'])) { $query->where('created_at', '>=', $this->filters['from_date']); } if (!empty($this->filters['to_date'])) { $query->where('created_at', '<=', $this->filters['to_date']); } return $query; } public function headings(): array { return [ 'شناسه', 'کاربر', 'ایمیل', 'مبلغ (ریال)', 'نوع', 'وضعیت', 'درگاه', 'کد پیگیری', 'توضیحات', 'یادداشت ادمین', 'موجودی قبل', 'موجودی بعد', 'تاریخ ایجاد', 'تایید کننده', ]; } public function map($transaction): array { return [ $transaction->id, $transaction->wallet->user->name ?? 'نامشخص', $transaction->wallet->user->email ?? 'نامشخص', $transaction->amount, $transaction->type->label(), $transaction->status->label(), $transaction->gateway?->label() ?? '-', $transaction->gateway_reference_id ?? '-', $transaction->description ?? '-', $transaction->admin_notes ?? '-', $transaction->balance_before ?? 0, $transaction->balance_after ?? 0, $transaction->created_at?->format('Y/m/d H:i'), $transaction->approver?->name ?? '-', ]; } public function styles(Worksheet $sheet) { return [ // First row as bold text. 1 => ['font' => ['bold' => true, 'size' => 12]], ]; } }