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

SspAssetQuoteItemSetter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 24
dl 0
loc 52
rs 10
c 1
b 0
f 0
wmc 8

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setSspAssetToQuoteItem() 0 31 5
A __construct() 0 4 1
A updateItemWithSspAsset() 0 11 2
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\Zed\SelfServicePortal\Business\Asset\Quote;
9
10
use Generated\Shared\Transfer\CustomerTransfer;
11
use Generated\Shared\Transfer\ItemTransfer;
12
use Generated\Shared\Transfer\QuoteResponseTransfer;
13
use Generated\Shared\Transfer\SspAssetQuoteItemAttachmentRequestTransfer;
14
use Generated\Shared\Transfer\SspAssetTransfer;
15
use Spryker\Zed\Quote\Business\QuoteFacadeInterface;
16
17
class SspAssetQuoteItemSetter implements SspAssetQuoteItemSetterInterface
18
{
19
    public function __construct(
20
        protected QuoteFacadeInterface $quoteFacade,
21
        protected QuoteItemFinderInterface $itemFinder
22
    ) {
23
    }
24
25
    public function setSspAssetToQuoteItem(SspAssetQuoteItemAttachmentRequestTransfer $sspAssetQuoteItemAttachmentRequestTransfer): QuoteResponseTransfer
26
    {
27
        $quoteResponseTransfer = $this->quoteFacade->findQuoteById($sspAssetQuoteItemAttachmentRequestTransfer->getIdQuoteOrFail());
28
        if (!$quoteResponseTransfer->getIsSuccessful()) {
29
            return $quoteResponseTransfer;
30
        }
31
        $quoteTransfer = $quoteResponseTransfer->getQuoteTransfer();
32
33
        if (!$quoteTransfer) {
34
            $quoteResponseTransfer->setIsSuccessful(false);
35
36
            return $quoteResponseTransfer;
37
        }
38
39
        if (!$quoteTransfer->getCustomer()) {
40
            $quoteTransfer->setCustomer((new CustomerTransfer())->setCustomerReference($quoteTransfer->getCustomerReferenceOrFail()));
41
        }
42
43
        $itemTransfer = $this->itemFinder->findItem(
44
            $quoteTransfer,
45
            $sspAssetQuoteItemAttachmentRequestTransfer->getItemOrFail(),
46
        );
47
        if (!$itemTransfer) {
48
            $quoteResponseTransfer->setIsSuccessful(false);
49
50
            return $quoteResponseTransfer;
51
        }
52
53
        $this->updateItemWithSspAsset($itemTransfer, $sspAssetQuoteItemAttachmentRequestTransfer->getSspAssetReference());
54
55
        return $this->quoteFacade->updateQuote($quoteTransfer);
56
    }
57
58
    protected function updateItemWithSspAsset(ItemTransfer $itemTransfer, ?string $sspAssetReference): void
59
    {
60
        if (!$sspAssetReference) {
61
            $itemTransfer->setSspAsset(null);
62
63
            return;
64
        }
65
66
        $itemTransfer->setSspAsset(
67
            (new SspAssetTransfer())
68
                ->setReference($sspAssetReference),
69
        );
70
    }
71
}
72