db->prepare($sql); $stmt->execute($data); return $this->db->lastInsertId(); } public function findByTransactionId($transactionId) { $stmt = $this->db->prepare("SELECT * FROM purchases WHERE transaction_id = :id"); $stmt->execute(['id' => $transactionId]); return $stmt->fetch(); } public function updateStatus($id, $status, $escrowStatus = null) { $sql = "UPDATE purchases SET status = :status"; $params = ['id' => $id, 'status' => $status]; if ($escrowStatus) { $sql .= ", escrow_status = :escrow_status"; $params['escrow_status'] = $escrowStatus; } $sql .= " WHERE id = :id"; $stmt = $this->db->prepare($sql); return $stmt->execute($params); } public function generateUniqueReference() { $ref = 'REF-' . strtoupper(substr(md5(uniqid()), 0, 8)); // Check if exists $stmt = $this->db->prepare("SELECT id FROM purchases WHERE reference_number = :ref"); $stmt->execute(['ref' => $ref]); if ($stmt->fetch()) { return $this->generateUniqueReference(); } return $ref; } }