builder(); $builder->where('transaction_id', $transactionId); if ($providerId !== null) { $builder->where('provider_id', $providerId); } $result = $builder->get()->getRowArray(); return $result; } public function getTransactionsBySale(int $saleId): array { return $this->where('sale_id', $saleId) ->orderBy('created_at', 'DESC') ->findAll(); } public function getPendingTransactions(?string $providerId = null): array { $builder = $this->builder(); $builder->where('status', self::STATUS_PENDING); if ($providerId !== null) { $builder->where('provider_id', $providerId); } return $builder->get()->getResultArray(); } public function updateStatus(int $id, string $status, array $additionalData = []): bool { $data = ['status' => $status]; if (!empty($additionalData['metadata'])) { $existing = $this->find($id); if ($existing) { $existingMetadata = json_decode($existing['metadata'] ?? '{}', true); $data['metadata'] = json_encode(array_merge($existingMetadata, $additionalData['metadata'])); } } return $this->update($id, $data); } }