Skip to content

Commit

Permalink
Merge pull request #1491 from androshchuk/1477-fix-error-in-tracker-m…
Browse files Browse the repository at this point in the history
…odule

add check empty array and refactoring code
  • Loading branch information
romainruaud authored Jul 31, 2019
2 parents 13b6002 + 837cdec commit 148ac0d
Showing 1 changed file with 25 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@

namespace Smile\ElasticsuiteTracker\Model\ResourceModel;

use Magento\Framework\Api\Search\AggregationValueInterface;
use Magento\Framework\Search\SearchEngineInterface;
use Smile\ElasticsuiteCore\Search\Adapter\Elasticsuite\Response\Aggregation\Value;
use Smile\ElasticsuiteCore\Search\Request\Builder;
use Smile\ElasticsuiteCore\Search\RequestInterface;

/**
* Session index resource model.
*
Expand All @@ -26,26 +32,26 @@ class SessionIndex
/**
* @var string
*/
const SEARCH_REQUEST_CONTAINER = 'session_aggregator';
private const SEARCH_REQUEST_CONTAINER = 'session_aggregator';

/**
* @var \Smile\ElasticsuiteCore\Search\Request\Builder
* @var Builder
*/
private $searchRequestBuilder;

/**
* @var \Magento\Framework\Search\SearchEngineInterface
* @var SearchEngineInterface
*/
private $searchEngine;

/**
* Constructor.
*
* @param \Smile\ElasticsuiteCore\Search\Request\Builder $searchRequestBuilder Search request builder.
* @param \Magento\Framework\Search\SearchEngineInterface $searchEngine Search engine.
* @param Builder $searchRequestBuilder Search request builder.
* @param SearchEngineInterface $searchEngine Search engine.
*/
public function __construct(
\Smile\ElasticsuiteCore\Search\Request\Builder $searchRequestBuilder,
Builder $searchRequestBuilder,
\Magento\Framework\Search\SearchEngineInterface $searchEngine
) {
$this->searchRequestBuilder = $searchRequestBuilder;
Expand All @@ -60,18 +66,19 @@ public function __construct(
*
* @return array
*/
public function getSessionData($storeId, $sessionIds)
public function getSessionData($storeId, $sessionIds): array
{
$data = [];
$searchRequest = $this->getSearchRequest($storeId, $sessionIds);
$searchResponse = $this->searchEngine->search($searchRequest);
if ($searchResponse->getAggregations()->getBucket('session_id') !== null) {
foreach ($searchResponse->getAggregations()->getBucket('session_id')->getValues() as $sessionValue) {
$sessionData = $this->processSessionData($sessionValue);
$sessionData['store_id'] = $storeId;
unset($sessionData['count']);

foreach ($searchResponse->getAggregations()->getBucket('session_id')->getValues() as $sessionValue) {
$sessionData = $this->processSessionData($sessionValue);
$sessionData['store_id'] = $storeId;
unset($sessionData['count']);

$data[] = array_filter($sessionData);
$data[] = array_filter($sessionData);
}
}

return $data;
Expand All @@ -83,9 +90,9 @@ public function getSessionData($storeId, $sessionIds)
* @param int $storeId Current store Id.
* @param string[] $sessionIds Session ids.
*
* @return \Smile\ElasticsuiteCore\Search\RequestInterface
* @return RequestInterface
*/
private function getSearchRequest($storeId, $sessionIds)
private function getSearchRequest($storeId, $sessionIds): RequestInterface
{
$queryFilters = ['session.uid' => $sessionIds];

Expand All @@ -95,14 +102,15 @@ private function getSearchRequest($storeId, $sessionIds)
/**
* Prepare session data from search aggregation response.
*
* @param \Smile\ElasticsuiteCore\Search\Adapter\Elasticsuite\Response\Aggregation\Value $value Aggregation value.
* @param AggregationValueInterface $value Aggregation value.
*
* @return array
*/
private function processSessionData(\Smile\ElasticsuiteCore\Search\Adapter\Elasticsuite\Response\Aggregation\Value $value)
private function processSessionData(AggregationValueInterface $value): array
{
$data = ['session_id' => $value->getValue()];

/** @var Value $value */
foreach ($value->getAggregations()->getBuckets() as $bucket) {
$bucketName = $bucket->getName();
$bucketValues = [];
Expand Down

0 comments on commit 148ac0d

Please sign in to comment.