Passed
Push — master ( 59f96f...9edaa9 )
by Mikołaj
05:36
created

ChannelPricingBuilder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
/*
4
 * This file has been created by developers from BitBag. 
5
 * Feel free to contact us once you face any issues or want to start
6
 * another great project. 
7
 * You can find more information about us on https://bitbag.shop and write us
8
 * an email on [email protected]. 
9
 */
10
11
declare(strict_types=1);
12
13
namespace BitBag\SyliusElasticsearchPlugin\PropertyBuilder;
14
15
use BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolverInterface;
16
use FOS\ElasticaBundle\Event\TransformEvent;
17
use Sylius\Component\Core\Model\ProductInterface;
18
use Sylius\Component\Core\Model\ProductVariantInterface;
19
20
final class ChannelPricingBuilder extends AbstractBuilder
21
{
22
    /**
23
     * @var ConcatedNameResolverInterface
24
     */
25
    private $channelPricingNameResolver;
26
27
    /**
28
     * @param ConcatedNameResolverInterface $channelPricingNameResolver
29
     */
30
    public function __construct(ConcatedNameResolverInterface $channelPricingNameResolver)
31
    {
32
        $this->channelPricingNameResolver = $channelPricingNameResolver;
33
    }
34
35
    /**
36
     * {@inheritdoc}
37
     */
38
    public function buildProperty(TransformEvent $event): void
39
    {
40
        $product = $event->getObject();
41
42
        if (!$product instanceof ProductInterface) {
43
            return;
44
        }
45
46
        $document = $event->getDocument();
47
48
        /** @var ProductVariantInterface $productVariant */
49
        foreach ($product->getVariants() as $productVariant) {
50
            foreach($productVariant->getChannelPricings() as $channelPricing) {
51
                $propertyName = $this->channelPricingNameResolver->resolvePropertyName($channelPricing->getChannelCode());
52
53
                $document->set($propertyName, $channelPricing->getPrice());
54
            }
55
        }
56
    }
57
}
58