Passed
Push — feature/paypal-express ( ddef87...f7968e )
by Volodymyr
05:46
created

ItemsCapturePlugin::getCaptureAmount()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEco\Zed\Braintree\Communication\Plugin\Oms\Command;
9
10
use Generated\Shared\Transfer\TransactionMetaTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\TransactionMetaTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Orm\Zed\Sales\Persistence\SpySalesOrder;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Sales\Persistence\SpySalesOrder was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Spryker\Zed\Kernel\Communication\AbstractPlugin;
13
use Spryker\Zed\Oms\Business\Util\ReadOnlyArrayObject;
14
use Spryker\Zed\Oms\Dependency\Plugin\Command\CommandByOrderInterface;
15
16
/**
17
 * @method \SprykerEco\Zed\Braintree\Business\BraintreeFacadeInterface getFacade()
18
 * @method \SprykerEco\Zed\Braintree\Communication\BraintreeCommunicationFactory getFactory()
19
 * @method \SprykerEco\Zed\Braintree\BraintreeConfig getConfig()
20
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeQueryContainerInterface getQueryContainer()
21
 */
22
class ItemsCapturePlugin extends AbstractPlugin implements CommandByOrderInterface
23
{
24
    /**
25
     * @api
26
     *
27
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
28
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
29
     * @param \Spryker\Zed\Oms\Business\Util\ReadOnlyArrayObject $data
30
     *
31
     * @return array
32
     */
33
    public function run(array $orderItems, SpySalesOrder $orderEntity, ReadOnlyArrayObject $data): array
34
    {
35
        $transactionMetaTransfer = new TransactionMetaTransfer();
36
        $transactionMetaTransfer->setIdSalesOrder($orderEntity->getIdSalesOrder());
37
        $transactionMetaTransfer->setCaptureAmount($this->getCaptureAmount($orderItems));
38
        $transactionMetaTransfer->setIdItems($this->getItemIds($orderItems));
39
40
        $this->getFacade()->captureItemsPayment($transactionMetaTransfer);
41
42
        return [];
43
    }
44
45
    /**
46
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
47
     *
48
     * @return int
49
     */
50
    protected function getCaptureAmount(array $orderItems): int
51
    {
52
        $amount = 0;
53
54
        foreach ($orderItems as $orderItem) {
55
            $amount += $orderItem->getPriceToPayAggregation();
56
        }
57
58
        return $amount;
59
    }
60
61
    /**
62
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
63
     *
64
     * @return array
65
     */
66
    protected function getItemIds(array $orderItems): array
67
    {
68
        $itemIds = [];
69
70
        foreach ($orderItems as $orderItem) {
71
            $itemIds[] = $orderItem->getIdSalesOrderItem();
72
        }
73
74
        return $itemIds;
75
    }
76
}
77