Failed Conditions
Push — master ( e0fde8...98a030 )
by
unknown
44:34 queued 15:21
created

SspCartItemAssetSelectorWidget::addFormParameter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
nc 1
nop 1
dl 0
loc 10
rs 10
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerFeature\Yves\SelfServicePortal\Widget;
9
10
use Generated\Shared\Transfer\CompanyUserTransfer;
11
use Generated\Shared\Transfer\ItemTransfer;
12
use Spryker\Yves\Kernel\Widget\AbstractWidget;
13
14
/**
15
 * @method \SprykerFeature\Yves\SelfServicePortal\SelfServicePortalFactory getFactory()
16
 */
17
class SspCartItemAssetSelectorWidget extends AbstractWidget
18
{
19
    /**
20
     * @var string
21
     */
22
    protected const NAME = 'SspCartItemAssetSelectorWidget';
23
24
    /**
25
     * @var string
26
     */
27
    protected const PARAMETER_IS_DISABLED = 'isDisabled';
28
29
    /**
30
     * @var string
31
     */
32
    protected const PARAMETER_IS_VISIBLE = 'isVisible';
33
34
    /**
35
     * @var string
36
     */
37
    protected const PARAMETER_PRODUCT_ITEM = 'productItem';
38
39
    /**
40
     * @var string
41
     */
42
    protected const PARAMETER_ASSET = 'asset';
43
44
    /**
45
     * @var string
46
     */
47
    protected const PARAMETER_FORM = 'form';
48
49
    public function __construct(ItemTransfer $productViewTransfer)
50
    {
51
        $this->addProductItemParameter($productViewTransfer);
52
53
        $this->addFormParameter($productViewTransfer);
54
55
        $companyUserTransfer = $this->getFactory()->getCompanyUserClient()->findCompanyUser();
56
        if (!$companyUserTransfer) {
57
            $this->addIsVisibleParameter(false);
58
59
            return;
60
        }
61
62
        $this->addIsVisibleParameter(true);
63
        $this->addSspAssetParameter($companyUserTransfer, $productViewTransfer);
64
    }
65
66
    /**
67
     * {@inheritDoc}
68
     *
69
     * @api
70
     *
71
     * @return string
72
     */
73
    public static function getName(): string
74
    {
75
        return static::NAME;
76
    }
77
78
    /**
79
     * {@inheritDoc}
80
     *
81
     * @api
82
     *
83
     * @return string
84
     */
85
    public static function getTemplate(): string
86
    {
87
        return '@SelfServicePortal/views/cart-item-asset-selector/cart-item-asset-selector.twig';
88
    }
89
90
    protected function addProductItemParameter(ItemTransfer $productViewTransfer): void
91
    {
92
        $this->addParameter(static::PARAMETER_PRODUCT_ITEM, $productViewTransfer);
93
    }
94
95
    protected function addIsDisabledParameter(bool $isDisabled): void
96
    {
97
        $this->addParameter(static::PARAMETER_IS_DISABLED, $isDisabled);
98
    }
99
100
    protected function addSspAssetParameter(CompanyUserTransfer $companyUserTransfer, ItemTransfer $itemTransfer): void
101
    {
102
        if (!$itemTransfer->getSspAsset()) {
103
            $this->addParameter(static::PARAMETER_ASSET, null);
104
105
            return;
106
        }
107
108
        $sspAssetStorageTransfer = $this->getFactory()->createSspAssetStorageReader()->findSspAssetStorageByReference(
109
            $companyUserTransfer,
110
            $itemTransfer->getSspAsset()->getReferenceOrFail(),
111
        );
112
113
        if ($sspAssetStorageTransfer) {
114
            $sspAssetStorageTransfer->setReference($itemTransfer->getSspAsset()->getReference());
115
        }
116
117
        $this->addParameter(static::PARAMETER_ASSET, $sspAssetStorageTransfer);
118
    }
119
120
    protected function addIsVisibleParameter(bool $isVisible): void
121
    {
122
        $this->addParameter(static::PARAMETER_IS_VISIBLE, $isVisible);
123
    }
124
125
    protected function addFormParameter(ItemTransfer $itemTransfer): void
126
    {
127
        $formData = [
128
            'sku' => $itemTransfer->getSku(),
129
            'groupKey' => $itemTransfer->getGroupKey(),
130
            'sspAsset' => $itemTransfer->getSspAsset()?->getReference(),
131
        ];
132
133
        $form = $this->getFactory()->createQuoteItemSspAssetForm($formData);
134
        $this->addParameter(static::PARAMETER_FORM, $form->createView());
135
    }
136
}
137