AbstractHandler::map()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
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\Sevensenders\Business\Handler;
9
10
use Generated\Shared\Transfer\OrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer 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 Generated\Shared\Transfer\SevensendersRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...nsendersRequestTransfer 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\SevensendersResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...sendersResponseTransfer 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\SpySevensendersResponseEntityTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...sResponseEntityTransfer 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 SprykerEco\Zed\Sevensenders\Business\Api\Adapter\AdapterInterface;
15
use SprykerEco\Zed\Sevensenders\Business\Mapper\MapperInterface;
16
use SprykerEco\Zed\Sevensenders\Dependency\Facade\SevensendersToSalesFacadeInterface;
17
use SprykerEco\Zed\Sevensenders\Dependency\Service\SevensendersToUtilEncodingServiceInterface;
18
use SprykerEco\Zed\Sevensenders\Persistence\SevensendersEntityManagerInterface;
19
20
abstract class AbstractHandler implements HandlerInterface
21
{
22
    protected const STATUS_CREATED = 201;
23
    protected const KEY_IRI = 'iri';
24
25
    /**
26
     * @var \SprykerEco\Zed\Sevensenders\Business\Mapper\MapperInterface
27
     */
28
    public $mapper;
29
30
    /**
31
     * @var \SprykerEco\Zed\Sevensenders\Business\Api\Adapter\AdapterInterface
32
     */
33
    public $adapter;
34
35
    /**
36
     * @var \SprykerEco\Zed\Sevensenders\Dependency\Facade\SevensendersToSalesFacadeInterface
37
     */
38
    public $salesFacade;
39
40
    /**
41
     * @var \SprykerEco\Zed\Sevensenders\Persistence\SevensendersEntityManagerInterface
42
     */
43
    public $entityManager;
44
45
    /**
46
     * @var \SprykerEco\Zed\Sevensenders\Dependency\Service\SevensendersToUtilEncodingServiceInterface
47
     */
48
    public $utilEncodingService;
49
50
    /**
51
     * @param \SprykerEco\Zed\Sevensenders\Business\Mapper\MapperInterface $mapper
52
     * @param \SprykerEco\Zed\Sevensenders\Business\Api\Adapter\AdapterInterface $adapter
53
     * @param \SprykerEco\Zed\Sevensenders\Dependency\Facade\SevensendersToSalesFacadeInterface $salesFacade
54
     * @param \SprykerEco\Zed\Sevensenders\Persistence\SevensendersEntityManagerInterface $entityManager
55
     * @param \SprykerEco\Zed\Sevensenders\Dependency\Service\SevensendersToUtilEncodingServiceInterface $utilEncodingService
56
     */
57
    public function __construct(
58
        MapperInterface $mapper,
59
        AdapterInterface $adapter,
60
        SevensendersToSalesFacadeInterface $salesFacade,
61
        SevensendersEntityManagerInterface $entityManager,
62
        SevensendersToUtilEncodingServiceInterface $utilEncodingService
63
    ) {
64
        $this->mapper = $mapper;
65
        $this->adapter = $adapter;
66
        $this->salesFacade = $salesFacade;
67
        $this->entityManager = $entityManager;
68
        $this->utilEncodingService = $utilEncodingService;
69
    }
70
71
    /**
72
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
73
     *
74
     * @return \Generated\Shared\Transfer\SevensendersRequestTransfer
75
     */
76
    protected function map(OrderTransfer $orderTransfer): SevensendersRequestTransfer
77
    {
78
        return $this->mapper->map($orderTransfer);
79
    }
80
81
    /**
82
     * @param \Generated\Shared\Transfer\SevensendersRequestTransfer $requestTransfer
83
     * @param string $resource
84
     *
85
     * @return void
86
     */
87
    protected function sendRequest(SevensendersRequestTransfer $requestTransfer, string $resource): void
88
    {
89
        $response = $this->adapter->send($requestTransfer, $resource);
90
91
        $this->saveResult($response, $resource);
92
    }
93
94
    /**
95
     * @param \Generated\Shared\Transfer\SevensendersResponseTransfer $responseTransfer
96
     * @param string $resource
97
     *
98
     * @return void
99
     */
100
    protected function saveResult(SevensendersResponseTransfer $responseTransfer, string $resource): void
101
    {
102
        $requestPayload = $this->utilEncodingService->decodeJson($responseTransfer->getRequestPayload());
103
        $responsePayload = $this->utilEncodingService->decodeJson($responseTransfer->getResponsePayload());
104
105
        $entityTransfer = new SpySevensendersResponseEntityTransfer();
106
107
        $entityTransfer->setRequestPayload($responseTransfer->getRequestPayload());
108
        $entityTransfer->setResponseStatus($responseTransfer->getStatus());
109
        $entityTransfer->setResourceType($resource);
110
        $entityTransfer->setFkSalesOrder($requestPayload['order_id']);
111
        $entityTransfer->setResponsePayload($responseTransfer->getResponsePayload());
112
113
        if ($responseTransfer->getStatus() === static::STATUS_CREATED) {
114
            $entityTransfer->setIri($responsePayload[static::KEY_IRI]);
115
        }
116
117
        $this->entityManager->createSevensendersResponse($entityTransfer, $resource);
118
    }
119
}
120