UpdateSuspendedOrderCommandPlugin::run()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 3
dl 0
loc 19
rs 9.9666
c 0
b 0
f 0
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\Communication\Plugin\Oms\Command;
9
10
use Orm\Zed\Sales\Persistence\SpySalesOrder;
11
use Spryker\Zed\Oms\Business\Util\ReadOnlyArrayObject;
12
use SprykerEco\Shared\AmazonPay\AmazonPayConfig;
13
14
/**
15
 * @method \SprykerEco\Zed\AmazonPay\Business\AmazonPayFacadeInterface getFacade()
16
 */
17
class UpdateSuspendedOrderCommandPlugin extends AbstractAmazonpayCommandPlugin
18
{
19
    /**
20
     * @api
21
     *
22
     * @param array $salesOrderItems
23
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
24
     * @param \Spryker\Zed\Oms\Business\Util\ReadOnlyArrayObject $data
25
     *
26
     * @return array
27
     */
28
    public function run(array $salesOrderItems, SpySalesOrder $orderEntity, ReadOnlyArrayObject $data)
29
    {
30
        $amazonpayCallTransfers = $this->groupSalesOrderItemsByAuthId($salesOrderItems);
31
32
        foreach ($amazonpayCallTransfers as $amazonpayCallTransfer) {
33
            $amazonpayCallTransfer->setRequestedAmount(
34
                $this->getRequestedAmountByOrderAndItems($orderEntity, $amazonpayCallTransfer->getItems())
35
            );
36
37
            if ($amazonpayCallTransfer->getAmazonpayPayment()->getStatus()
38
                === AmazonPayConfig::STATUS_PAYMENT_METHOD_CHANGED
39
            ) {
40
                $this->getFacade()->reauthorizeSuspendedOrder($amazonpayCallTransfer);
41
            }
42
43
            $this->getFacade()->captureOrder($amazonpayCallTransfer);
44
        }
45
46
        return [];
47
    }
48
49
    /**
50
     * @return string
51
     */
52
    protected function getAffectingRequestedAmountItemsStateFlag()
53
    {
54
        return AmazonPayConfig::OMS_FLAG_NOT_AUTH;
55
    }
56
}
57