Passed
Push — trunk ( 9dfcf5...f40966 )
by Christian
12:13 queued 13s
created

ElasticsearchLanguageProvider::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 0
nc 1
nop 2
dl 0
loc 2
rs 10
c 1
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Shopware\Elasticsearch\Framework;
4
5
use Psr\EventDispatcher\EventDispatcherInterface;
6
use Shopware\Core\Framework\Context;
7
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
8
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
9
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
10
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\NandFilter;
11
use Shopware\Core\Framework\DataAbstractionLayer\Search\Sorting\FieldSorting;
12
use Shopware\Core\Framework\Log\Package;
13
use Shopware\Core\System\Language\LanguageCollection;
14
use Shopware\Elasticsearch\Framework\Indexing\Event\ElasticsearchIndexerLanguageCriteriaEvent;
15
16
#[Package('core')]
17
class ElasticsearchLanguageProvider
18
{
19
    /**
20
     * @internal
21
     */
22
    public function __construct(private readonly EntityRepository $languageRepository, private readonly EventDispatcherInterface $eventDispatcher)
23
    {
24
    }
25
26
    public function getLanguages(Context $context): LanguageCollection
27
    {
28
        $criteria = new Criteria();
29
        $criteria->addFilter(new NandFilter([new EqualsFilter('salesChannels.id', null)]));
30
        $criteria->addSorting(new FieldSorting('id'));
31
32
        $this->eventDispatcher->dispatch(new ElasticsearchIndexerLanguageCriteriaEvent($criteria, $context));
33
34
        /** @var LanguageCollection $languages */
35
        $languages = $this->languageRepository
36
            ->search($criteria, $context)
37
            ->getEntities();
38
39
        return $languages;
40
    }
41
}
42