registry->registry('current_order'); } public function getItems(): array { return array_values(array_filter($this->getOrder()->getAllVisibleItems(), fn($item) => (float)$item->getQtyOrdered() - (float)$item->getQtyCanceled() > 0)); } public function canReview(\Magento\Sales\Model\Order\Item $item): bool { return $this->eligibility->canReview($item, (int)$this->session->getCustomerId()); } public function hasReviewed(\Magento\Sales\Model\Order\Item $item): bool { return $this->eligibility->hasReviewed((int)$this->session->getCustomerId(), (int)$item->getProductId()); } public function getRatings(): \Magento\Review\Model\ResourceModel\Rating\Collection { return $this->ratings->create()->getResourceCollection()->addEntityFilter('product')->setPositionOrder()->addRatingPerStoreName((int)$this->_storeManager->getStore()->getId())->setStoreFilter((int)$this->_storeManager->getStore()->getId())->setActiveFilter(true)->load()->addOptionToItems(); } public function getPostUrl(int $productId): string { return $this->getUrl('review/product/post', ['id' => $productId, '_secure' => $this->getRequest()->isSecure()]); } }