Passed
Push — feature/paypal-express ( 8eac93...3cde97 )
by Volodymyr
05:19
created

RefundOrderTransactionHandler::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 3
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler;
5
6
7
use Generated\Shared\Transfer\BraintreeTransactionResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...sactionResponseTransfer 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...
8
use Generated\Shared\Transfer\RefundTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\RefundTransfer 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...
9
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...
10
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...
11
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface;
12
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface;
13
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface;
14
15
class RefundOrderTransactionHandler extends AbstractTransactionHandler implements RefundOrderTransactionHandlerInterface
16
{
17
    /**
18
     * @var \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface
19
     */
20
    protected $refundFacade;
21
22
    /**
23
     * @param \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface $transaction
24
     * @param \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface $transactionMetaVisitor
25
     * @param \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface $refundFacade
26
     */
27
    public function __construct(
28
        TransactionInterface $transaction,
29
        TransactionMetaVisitorInterface $transactionMetaVisitor,
30
        BraintreeToRefundFacadeInterface $refundFacade
31
    ) {
32
        parent::__construct($transaction, $transactionMetaVisitor);
33
34
        $this->refundFacade = $refundFacade;
35
    }
36
37
    /**
38
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $salesOrderItems
39
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $salesOrderEntity
40
     *
41
     * @return \Generated\Shared\Transfer\BraintreeTransactionResponseTransfer
42
     */
43
    public function refund(array $salesOrderItems, SpySalesOrder $salesOrderEntity): BraintreeTransactionResponseTransfer
44
    {
45
        $refundTransfer = $this->getRefund($salesOrderItems, $salesOrderEntity);
46
47
        $transactionMetaTransfer = new TransactionMetaTransfer();
48
        $transactionMetaTransfer->setIdSalesOrder($salesOrderEntity->getIdSalesOrder());
49
        $transactionMetaTransfer->setRefund($refundTransfer);
50
51
        $this->transactionMetaVisitor->visit($transactionMetaTransfer);
52
53
        $braintreeTransactionResponseTransfer = $this->transaction->executeTransaction($transactionMetaTransfer);
54
55
        if ($braintreeTransactionResponseTransfer->getIsSuccess()) {
56
            $this->refundFacade->saveRefund($refundTransfer);
57
        }
58
59
        return $braintreeTransactionResponseTransfer;
60
    }
61
62
    /**
63
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $salesOrderItems
64
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $salesOrderEntity
65
     *
66
     * @return \Generated\Shared\Transfer\RefundTransfer
67
     */
68
    protected function getRefund(array $salesOrderItems, SpySalesOrder $salesOrderEntity): RefundTransfer
69
    {
70
        return $this->refundFacade->calculateRefund($salesOrderItems, $salesOrderEntity);
71
    }
72
}
73