getRequest()->getParam('product_id', false); /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); if ($data = $this->getRequest()->getPostValue()) { /** @var \Magento\Store\Model\StoreManagerInterface $storeManager */ $storeManager = $this->_objectManager->get(\Magento\Store\Model\StoreManagerInterface::class); if ($storeManager->hasSingleStore()) { $data['stores'] = [ $storeManager->getStore(true)->getId(), ]; } elseif (isset($data['select_stores'])) { $data['stores'] = $data['select_stores']; } $review = $this->reviewFactory->create()->setData($data); try { $review->setEntityId(1) // product ->setEntityPkValue($productId) ->setStoreId(Store::DEFAULT_STORE_ID) ->setStatusId($data['status_id']) ->setCustomerId(null)//null is for administrator only ->save(); $arrRatingId = $this->getRequest()->getParam('ratings', []); foreach ($arrRatingId as $ratingId => $optionId) { $this->ratingFactory->create() ->setRatingId($ratingId) ->setReviewId($review->getId()) ->addOptionVote($optionId, $productId); } $review->aggregate(); $this->messageManager->addSuccess(__('You saved the review.')); if ($this->getRequest()->getParam('ret') == 'pending') { $resultRedirect->setPath('review/*/pending'); } else { $resultRedirect->setPath('review/*/'); } return $resultRedirect; } catch (LocalizedException $e) { $this->messageManager->addError($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addException($e, __('Something went wrong while saving this review.')); } } $resultRedirect->setPath('review/*/'); return $resultRedirect; } }