PluginProbe
Packeta / 1.2.6
Packeta v1.2.6
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Order / PacketSynchronizer.php

PacketSynchronizer.php in Packeta 1.2.6, at src/Packetery/Module/Order/PacketSynchronizer.php

114 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class Synchronizer
4 *
5 * @package Packetery\Module\Order
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module\Order;
12
13 use Packetery\Core\Api;
14 use Packetery\Core\Log;
15 use Packetery\Module\Options;
16
17 /**
18 * Class Synchronizer
19 *
20 * @package Packetery\Module\Order
21 */
22 class PacketSynchronizer {
23
24 /**
25 * API soap client.
26 *
27 * @var Api\Soap\Client
28 */
29 private $apiSoapClient;
30
31 /**
32 * Options provider.
33 *
34 * @var Options\Provider
35 */
36 private $optionsProvider;
37
38 /**
39 * Logger.
40 *
41 * @var Log\ILogger
42 */
43 private $logger;
44
45 /**
46 * Order repository.
47 *
48 * @var Repository
49 */
50 private $orderRepository;
51
52 /**
53 * Constructor.
54 *
55 * @param Api\Soap\Client $apiSoapClient API soap client.
56 * @param Log\ILogger $logger Logger.
57 * @param Options\Provider $optionsProvider Options provider.
58 * @param Repository $orderRepository Order repository.
59 */
60 public function __construct(
61 Api\Soap\Client $apiSoapClient,
62 Log\ILogger $logger,
63 Options\Provider $optionsProvider,
64 Repository $orderRepository
65 ) {
66 $this->apiSoapClient = $apiSoapClient;
67 $this->logger = $logger;
68 $this->optionsProvider = $optionsProvider;
69 $this->orderRepository = $orderRepository;
70 }
71
72 /**
73 * Synchronizes packets.
74 *
75 * @return void
76 */
77 public function syncStatuses(): void {
78 $results = $this->orderRepository->findStatusSyncingOrders( $this->optionsProvider->getMaxStatusSyncingPackets() );
79
80 foreach ( $results as $order ) {
81 $packetId = $order->getPacketId();
82
83 $request = new Api\Soap\Request\PacketStatus( (int) $packetId );
84 $response = $this->apiSoapClient->packetStatus( $request );
85
86 if ( $response->hasFault() ) {
87 $record = new Log\Record();
88 $record->action = Log\Record::ACTION_PACKET_STATUS_SYNC;
89 $record->status = Log\Record::STATUS_ERROR;
90 $record->title = __( 'packetStatusSyncErrorLogTitle', 'packetery' );
91 $record->params = [
92 'orderId' => $order->getNumber(),
93 'packetId' => $request->getPacketId(),
94 'errorMessage' => $response->getFaultString(),
95 ];
96 $this->logger->add( $record );
97
98 if ( $response->hasWrongPassword() ) {
99 break;
100 }
101
102 continue;
103 }
104
105 if ( $response->getCodeText() === $order->getPacketStatus() ) {
106 continue;
107 }
108
109 $order->setPacketStatus( $response->getCodeText() );
110 $this->orderRepository->save( $order );
111 }
112 }
113 }
114