RelatedItemsUpdateModel   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
c 1
b 0
f 0
dl 0
loc 64
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getAffectedItemIds() 0 7 1
A triggerEvent() 0 19 2
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\Order;
9
10
use Generated\Shared\Transfer\AmazonpayCallTransfer;
11
use Generated\Shared\Transfer\ItemTransfer;
12
use SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToOmsInterface;
13
use SprykerEco\Zed\AmazonPay\Persistence\AmazonPayQueryContainerInterface;
14
15
class RelatedItemsUpdateModel implements RelatedItemsUpdateInterface
16
{
17
    /**
18
     * @var \SprykerEco\Zed\AmazonPay\Persistence\AmazonPayQueryContainerInterface
19
     */
20
    protected $queryContainer;
21
22
    /**
23
     * @var \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToOmsInterface
24
     */
25
    protected $omsFacade;
26
27
    /**
28
     * @param \SprykerEco\Zed\AmazonPay\Persistence\AmazonPayQueryContainerInterface $queryContainer
29
     * @param \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToOmsInterface $omsFacade
30
     */
31
    public function __construct(AmazonPayQueryContainerInterface $queryContainer, AmazonPayToOmsInterface $omsFacade)
32
    {
33
        $this->queryContainer = $queryContainer;
34
        $this->omsFacade = $omsFacade;
35
    }
36
37
    /**
38
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonpayCallTransfer
39
     * @param int[] $alreadyAffectedItems
40
     * @param string $eventName
41
     *
42
     * @return void
43
     */
44
    public function triggerEvent(AmazonpayCallTransfer $amazonpayCallTransfer, array $alreadyAffectedItems, $eventName)
45
    {
46
        $affectedItems = $this->getAffectedItemIds($amazonpayCallTransfer);
47
        $affectedItems = array_merge($affectedItems, $alreadyAffectedItems);
48
49
        $toBeUpdatedItems = $this->queryContainer
50
            ->querySalesOrderItemsByPaymentReferenceId(
51
                $amazonpayCallTransfer->getAmazonpayPayment()->getAuthorizationDetails()->getAuthorizationReferenceId(),
52
                $affectedItems
53
            )
54
            ->find();
55
56
        if ($toBeUpdatedItems->count() > 0) {
57
            $this->omsFacade
58
                ->triggerEvent(
59
                    $eventName,
60
                    $toBeUpdatedItems,
61
                    [],
62
                    $affectedItems
63
                );
64
        }
65
    }
66
67
    /**
68
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonpayCallTransfer
69
     *
70
     * @return int[]
71
     */
72
    protected function getAffectedItemIds(AmazonpayCallTransfer $amazonpayCallTransfer)
73
    {
74
        return array_map(
75
            function (ItemTransfer $item) {
76
                return $item->getIdSalesOrderItem();
77
            },
78
            $amazonpayCallTransfer->getItems()->getArrayCopy()
79
        );
80
    }
81
}
82