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

SessionQuoteStorageStrategy::findItem()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
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\Client\SelfServicePortal\Asset\Quote;
9
10
use Generated\Shared\Transfer\ItemTransfer;
11
use Generated\Shared\Transfer\QuoteResponseTransfer;
12
use Generated\Shared\Transfer\QuoteTransfer;
13
use Generated\Shared\Transfer\SspAssetQuoteItemAttachmentRequestTransfer;
14
use Generated\Shared\Transfer\SspAssetTransfer;
15
use Spryker\Client\Quote\QuoteClientInterface;
16
17
class SessionQuoteStorageStrategy implements QuoteStorageStrategyInterface
18
{
19
    /**
20
     * @uses \Spryker\Shared\Quote\QuoteConfig::STORAGE_STRATEGY_SESSION
21
     *
22
     * @var string
23
     */
24
    public const STORAGE_STRATEGY_SESSION = 'session';
25
26
    public function __construct(
27
        protected QuoteClientInterface $quoteClient,
28
        protected QuoteItemFinderInterface $quoteItemFinder
29
    ) {
30
    }
31
32
    public function getStorageStrategy(): string
33
    {
34
        return static::STORAGE_STRATEGY_SESSION;
35
    }
36
37
    public function attachSspAssetToQuoteItem(SspAssetQuoteItemAttachmentRequestTransfer $sspAssetQuoteItemAttachmentRequestTransfer): QuoteResponseTransfer
38
    {
39
        $quoteTransfer = $this->quoteClient->getQuote();
40
        $quoteItemTransfer = $this->findItem($quoteTransfer, $sspAssetQuoteItemAttachmentRequestTransfer->getItemOrFail());
41
42
        $quoteResponseTransfer = new QuoteResponseTransfer();
43
44
        if (!$quoteItemTransfer) {
45
            $quoteResponseTransfer->setIsSuccessful(false);
46
47
            return $quoteResponseTransfer;
48
        }
49
50
        if ($sspAssetQuoteItemAttachmentRequestTransfer->getSspAssetReference()) {
51
            $quoteItemTransfer->setSspAsset(
52
                (new SspAssetTransfer())->setReference($sspAssetQuoteItemAttachmentRequestTransfer->getSspAssetReference()),
53
            );
54
        }
55
56
        if (!$sspAssetQuoteItemAttachmentRequestTransfer->getSspAssetReference()) {
57
            $quoteItemTransfer->setSspAsset(null);
58
        }
59
60
        $this->quoteClient->setQuote($quoteTransfer);
61
        $quoteResponseTransfer->setIsSuccessful(true);
62
63
        return $quoteResponseTransfer;
64
    }
65
66
    protected function findItem(QuoteTransfer $quoteTransfer, ItemTransfer $itemTransfer): ?ItemTransfer
67
    {
68
        return $this->quoteItemFinder->findItem($quoteTransfer, $itemTransfer);
69
    }
70
}
71