Passed
Push — feature/eco-2295/eco-2356-main... ( 3dab14...a279a0 )
by Aleksey
03:10
created

RefundOmsCommandSaver::addOmsStatusToOrderItems()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 1
dl 0
loc 14
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\CrefoPay\Business\Oms\Command\Saver;
9
10
use ArrayObject;
11
use Generated\Shared\Transfer\CrefoPayOmsCommandTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...foPayOmsCommandTransfer 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 Generated\Shared\Transfer\PaymentCrefoPayOrderItemCollectionTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...rItemCollectionTransfer 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...
13
use Generated\Shared\Transfer\PaymentCrefoPayOrderItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...efoPayOrderItemTransfer 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...
14
use Generated\Shared\Transfer\PaymentCrefoPayTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\PaymentCrefoPayTransfer 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...
15
use SprykerEco\Zed\CrefoPay\Business\Reader\CrefoPayReaderInterface;
16
use SprykerEco\Zed\CrefoPay\Business\Writer\CrefoPayWriterInterface;
17
use SprykerEco\Zed\CrefoPay\CrefoPayConfig;
18
use SprykerEco\Zed\CrefoPay\Dependency\Facade\CrefoPayToOmsFacadeInterface;
19
20
class RefundOmsCommandSaver implements CrefoPayOmsCommandSaverInterface
21
{
22
    /**
23
     * @var \SprykerEco\Zed\CrefoPay\Business\Reader\CrefoPayReaderInterface
24
     */
25
    protected $reader;
26
27
    /**
28
     * @var \SprykerEco\Zed\CrefoPay\Business\Writer\CrefoPayWriterInterface
29
     */
30
    protected $writer;
31
32
    /**
33
     * @var \SprykerEco\Zed\CrefoPay\CrefoPayConfig
34
     */
35
    protected $config;
36
37
    /**
38
     * @var \SprykerEco\Zed\CrefoPay\Dependency\Facade\CrefoPayToOmsFacadeInterface
39
     */
40
    protected $omsFacade;
41
42
    /**
43
     * @param \SprykerEco\Zed\CrefoPay\Business\Reader\CrefoPayReaderInterface $reader
44
     * @param \SprykerEco\Zed\CrefoPay\Business\Writer\CrefoPayWriterInterface $writer
45
     * @param \SprykerEco\Zed\CrefoPay\CrefoPayConfig $config
46
     * @param \SprykerEco\Zed\CrefoPay\Dependency\Facade\CrefoPayToOmsFacadeInterface $omsFacade
47
     */
48
    public function __construct(
49
        CrefoPayReaderInterface $reader,
50
        CrefoPayWriterInterface $writer,
51
        CrefoPayConfig $config,
52
        CrefoPayToOmsFacadeInterface $omsFacade
53
    ) {
54
        $this->reader = $reader;
55
        $this->writer = $writer;
56
        $this->config = $config;
57
        $this->omsFacade = $omsFacade;
58
    }
59
60
    /**
61
     * @param \Generated\Shared\Transfer\CrefoPayOmsCommandTransfer $crefoPayOmsCommandTransfer
62
     *
63
     * @return void
64
     */
65
    public function savePaymentEntities(CrefoPayOmsCommandTransfer $crefoPayOmsCommandTransfer): void
66
    {
67
        if ($crefoPayOmsCommandTransfer->getResponse()->getIsSuccess() === false) {
68
            return;
69
        }
70
71
        $paymentCrefoPayOrderItemsCollection = $this->addOmsStatusToOrderItems(
72
            $crefoPayOmsCommandTransfer->getPaymentCrefoPayOrderItemCollection()
73
        );
74
75
        $this->writer->updatePaymentEntities(
76
            $paymentCrefoPayOrderItemsCollection,
77
            $this->getPaymentCrefoPayTransfer($crefoPayOmsCommandTransfer),
78
            $crefoPayOmsCommandTransfer->getResponse()->getCrefoPayApiLogId()
79
        );
80
    }
81
82
    /**
83
     * @param \Generated\Shared\Transfer\PaymentCrefoPayOrderItemCollectionTransfer $paymentCrefoPayOrderItemCollection
84
     *
85
     * @return \Generated\Shared\Transfer\PaymentCrefoPayOrderItemCollectionTransfer
86
     */
87
    protected function addOmsStatusToOrderItems(
88
        PaymentCrefoPayOrderItemCollectionTransfer $paymentCrefoPayOrderItemCollection
89
    ): PaymentCrefoPayOrderItemCollectionTransfer {
90
        $status = $this->config->getOmsStatusRefunded();
91
92
        $paymentCrefoPayOrderItems = array_map(
93
            function (PaymentCrefoPayOrderItemTransfer $paymentCrefoPayOrderItemTransfer) use ($status) {
94
                return $paymentCrefoPayOrderItemTransfer->setStatus($status);
95
            },
96
            $paymentCrefoPayOrderItemCollection->getCrefoPayOrderItems()->getArrayCopy()
97
        );
98
99
        return $paymentCrefoPayOrderItemCollection
100
            ->setCrefoPayOrderItems(new ArrayObject($paymentCrefoPayOrderItems));
101
    }
102
103
    /**
104
     * @param \Generated\Shared\Transfer\CrefoPayOmsCommandTransfer $crefoPayOmsCommandTransfer
105
     *
106
     * @return \Generated\Shared\Transfer\PaymentCrefoPayTransfer
107
     */
108
    protected function getPaymentCrefoPayTransfer(CrefoPayOmsCommandTransfer $crefoPayOmsCommandTransfer): PaymentCrefoPayTransfer
109
    {
110
        $paymentCrefoPayTransfer = $crefoPayOmsCommandTransfer->getPaymentCrefoPay();
111
        $refundedAmount = $paymentCrefoPayTransfer->getRefundedAmount();
112
        $requestedToRefundAmount = $crefoPayOmsCommandTransfer->getRequest()->getRefundRequest()->getAmount()->getAmount();
113
114
        return $paymentCrefoPayTransfer
115
            ->setRefundedAmount($refundedAmount + $requestedToRefundAmount);
116
    }
117
}
118