ShippingLabelFetcher::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 3
dl 0
loc 5
rs 10
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
        try {
32
            $this->webClient->setShippingGateway($shippingGateway);
33
            $this->webClient->setShipment($shipment);
34
            $requestData = $this->webClient->getRequestData();
35
36
            $this->response = $this->soapClient->createShipment($requestData, $shippingGateway->getConfigValue('wsdl'));
37
        } catch (\SoapFault $exception) {
38
            $this->flashBag->add(
39
                'error',
40
                sprintf(
41
                    'DHL24 Web Service for #%s order: %s',
42
                    $shipment->getOrder()->getNumber(),
43
                    $exception->getMessage()
44
                )
45
            );
46
47
            return;
48
        }
49
    }
50
51
    public function getLabelContent(): ?string
52
    {
53
        if (!isset($this->response->createShipmentResult)) {
0 ignored issues
show
Bug introduced by
The property createShipmentResult does not exist on string.
Loading history...
54
            return '';
55
        }
56
57
        $this->flashBag->add('success', 'bitbag.ui.shipment_data_has_been_exported'); // Add success notification
58
59
        return base64_decode($this->response->createShipmentResult->label->labelContent);
60
    }
61
}
62