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

attachSspAssetToQuoteItem()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 11
nc 3
nop 1
dl 0
loc 20
rs 9.9
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\QuoteResponseTransfer;
11
use Generated\Shared\Transfer\SspAssetQuoteItemAttachmentRequestTransfer;
12
use Spryker\Client\Quote\QuoteClientInterface;
13
use SprykerFeature\Client\SelfServicePortal\Zed\SelfServicePortalStubInterface;
14
15
class DatabaseQuoteStorageStrategy implements QuoteStorageStrategyInterface
16
{
17
    /**
18
     * @uses \Spryker\Shared\Quote\QuoteConfig::STORAGE_STRATEGY_DATABASE
19
     *
20
     * @var string
21
     */
22
    public const STORAGE_STRATEGY_DATABASE = 'database';
23
24
    public function __construct(
25
        protected QuoteClientInterface $quoteClient,
26
        protected SelfServicePortalStubInterface $selfServicePortalStub
27
    ) {
28
    }
29
30
    public function getStorageStrategy(): string
31
    {
32
        return static::STORAGE_STRATEGY_DATABASE;
33
    }
34
35
    public function attachSspAssetToQuoteItem(SspAssetQuoteItemAttachmentRequestTransfer $sspAssetQuoteItemAttachmentRequestTransfer): QuoteResponseTransfer
36
    {
37
        $quoteTransfer = $this->quoteClient->getQuote();
38
39
        if (!$quoteTransfer->getCustomer()) {
40
            $quoteResponseTransfer = new QuoteResponseTransfer();
41
            $quoteResponseTransfer->setIsSuccessful(false);
42
43
            return $quoteResponseTransfer;
44
        }
45
46
        $sspAssetQuoteItemAttachmentRequestTransfer->setIdQuote($quoteTransfer->getIdQuote());
47
48
        $quoteResponseTransfer = $this->selfServicePortalStub->attachSspAssetToQuoteItem($sspAssetQuoteItemAttachmentRequestTransfer);
49
        if ($quoteResponseTransfer->getIsSuccessful()) {
50
            $quoteTransfer->fromArray($quoteResponseTransfer->getQuoteTransferOrFail()->modifiedToArray());
51
            $this->quoteClient->setQuote($quoteTransfer);
52
        }
53
54
        return $quoteResponseTransfer;
55
    }
56
}
57