Passed
Pull Request — master (#12)
by
unknown
04:03
created

ShippingLabelFetcher::createShipment()   A

Complexity

Conditions 2
Paths 3

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 13
c 1
b 0
f 0
nc 3
nop 2
dl 0
loc 20
rs 9.8333
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BitBag\SyliusDhl24PlShippingExportPlugin\Api;
6
7
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
8
9
class ShippingLabelFetcher implements ShippingLabelFetcherInterface
10
{
11
    /** @var WebClientInterface */
12
    private $webClient;
13
14
    /** @var SoapClientInterface */
15
    private $soapClient;
16
17
    /** @var string */
18
    private $response;
19
20
    private FlashBagInterface $flashBag;
21
22
    public function __construct(FlashBagInterface $flashBag, WebClientInterface $webClient, SoapClientInterface $soapClient)
23
    {
24
        $this->flashBag = $flashBag;
25
        $this->webClient = $webClient;
26
        $this->soapClient = $soapClient;
27
    }
28
29
    public function createShipment($shippingGateway, $shipment): void
30
    {
31
        $this->webClient->setShippingGateway($shippingGateway);
32
        $this->webClient->setShipment($shipment);
33
34
        try {
35
            $requestData = $this->webClient->getRequestData();
36
37
            $this->response = $this->soapClient->createShipment($requestData, $shippingGateway->getConfigValue('wsdl'));
38
        } catch (\Exception $exception) {
39
            $this->flashBag->add(
40
                'error',
41
                sprintf(
42
                    'DHL24 Web Service for #%s order: %s',
43
                    $shipment->getOrder()->getNumber(),
44
                    $exception->getMessage()
45
                )
46
            );
47
48
            return;
49
        }
50
    }
51
52
    public function getLabelContent(): ?string
53
    {
54
        if (!isset($this->response->createShipmentResult)) {
0 ignored issues
show
Bug introduced by
The property createShipmentResult does not exist on string.
Loading history...
55
            return '';
56
        }
57
58
        $this->flashBag->add('success', 'bitbag.ui.shipment_data_has_been_exported'); // Add success notification
59
60
        return base64_decode($this->response->createShipmentResult->label->labelContent);
61
    }
62
}
63