Completed
Pull Request — master (#4)
by Andrey
10:46 queued 03:14
created

PrepareQuoteCollection   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 50
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A update() 0 11 3
A createMessage() 0 4 1
A __construct() 0 4 1
1
<?php
2
3
/**
4
 * Apache OSL-2
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\Amazonpay\Business\Quote;
9
10
use Generated\Shared\Transfer\MessageTransfer;
11
use Generated\Shared\Transfer\QuoteTransfer;
12
use SprykerEco\Zed\Amazonpay\Dependency\Facade\AmazonpayToMessengerInterface;
13
use Throwable;
14
15
class PrepareQuoteCollection implements QuoteUpdaterInterface
16
{
17
18
    /**
19
     * @var \SprykerEco\Zed\Amazonpay\Business\Quote\QuoteUpdaterInterface[]
20
     */
21
    protected $quoteUpdaters;
22
23
    /**
24
     * @var \SprykerEco\Zed\Amazonpay\Dependency\Facade\AmazonpayToMessengerInterface
25
     */
26
    protected $messengerFacade;
27
28
    /**
29
     * @param \SprykerEco\Zed\Amazonpay\Dependency\Facade\AmazonpayToMessengerInterface $messengerFacade
30
     * @param \SprykerEco\Zed\Amazonpay\Business\Quote\QuoteUpdaterInterface[] $quoteUpdaters
31
     */
32
    public function __construct(AmazonpayToMessengerInterface $messengerFacade, array $quoteUpdaters)
33
    {
34
        $this->messengerFacade = $messengerFacade;
35
        $this->quoteUpdaters = $quoteUpdaters;
36
    }
37
38
    /**
39
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
40
     *
41
     * @return \Generated\Shared\Transfer\QuoteTransfer
42
     */
43
    public function update(QuoteTransfer $quoteTransfer)
44
    {
45
        try {
46
            foreach ($this->quoteUpdaters as $quoteUpdater) {
47
                $quoteTransfer = $quoteUpdater->update($quoteTransfer);
48
            }
49
        } catch (Throwable $e) {
50
            $this->messengerFacade->addErrorMessage($this->createMessage('amazonpay.timeout.error'));
51
        }
52
53
        return $quoteTransfer;
54
    }
55
56
    /**
57
     * @param string $message
58
     *
59
     * @return \Generated\Shared\Transfer\MessageTransfer
60
     */
61
    protected function createMessage($message)
62
    {
63
        return (new MessageTransfer())
64
            ->setValue($message);
65
    }
66
67
}
68