PluginProbe
Packeta / 1.6.4
Packeta v1.6.4
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.6.4, at src/Packetery/Module/Order/PacketSynchronizer.php

155 lines 4.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\Entity\PacketStatus;
15 use Packetery\Core\Log;
16 use Packetery\Module\Options;
17
18 /**
19 * Class Synchronizer
20 *
21 * @package Packetery\Module\Order
22 */
23 class PacketSynchronizer {
24
25 /**
26 * API soap client.
27 *
28 * @var Api\Soap\Client
29 */
30 private $apiSoapClient;
31
32 /**
33 * Options provider.
34 *
35 * @var Options\Provider
36 */
37 private $optionsProvider;
38
39 /**
40 * Logger.
41 *
42 * @var Log\ILogger
43 */
44 private $logger;
45
46 /**
47 * Order repository.
48 *
49 * @var Repository
50 */
51 private $orderRepository;
52
53 /**
54 * Constructor.
55 *
56 * @param Api\Soap\Client $apiSoapClient API soap client.
57 * @param Log\ILogger $logger Logger.
58 * @param Options\Provider $optionsProvider Options provider.
59 * @param Repository $orderRepository Order repository.
60 */
61 public function __construct(
62 Api\Soap\Client $apiSoapClient,
63 Log\ILogger $logger,
64 Options\Provider $optionsProvider,
65 Repository $orderRepository
66 ) {
67 $this->apiSoapClient = $apiSoapClient;
68 $this->logger = $logger;
69 $this->optionsProvider = $optionsProvider;
70 $this->orderRepository = $orderRepository;
71 }
72
73 /**
74 * Synchronizes packets.
75 *
76 * @return void
77 */
78 public function syncStatuses(): void {
79 $results = $this->orderRepository->findStatusSyncingOrders(
80 $this->optionsProvider->getStatusSyncingPacketStatuses(),
81 $this->optionsProvider->getExistingStatusSyncingOrderStatuses(),
82 $this->optionsProvider->getMaxDaysOfPacketStatusSyncing(),
83 $this->optionsProvider->getMaxStatusSyncingPackets()
84 );
85
86 foreach ( $results as $order ) {
87 $packetId = $order->getPacketId();
88
89 $request = new Api\Soap\Request\PacketStatus( $packetId );
90 $response = $this->apiSoapClient->packetStatus( $request );
91
92 if ( $response->hasFault() ) {
93 $record = new Log\Record();
94 $record->action = Log\Record::ACTION_PACKET_STATUS_SYNC;
95 $record->status = Log\Record::STATUS_ERROR;
96 $record->title = __( 'Packet status could not be synchronized.', 'packeta' );
97 $record->params = [
98 'orderId' => $order->getNumber(),
99 'packetId' => $request->getPacketId(),
100 'errorMessage' => $response->getFaultString(),
101 ];
102 $record->orderId = $order->getNumber();
103 $this->logger->add( $record );
104
105 if ( $response->hasWrongPassword() ) {
106 break;
107 }
108
109 continue;
110 }
111
112 if ( $response->getCodeText() === $order->getPacketStatus() ) {
113 continue;
114 }
115
116 $order->setPacketStatus( $response->getCodeText() );
117 $this->orderRepository->save( $order );
118 }
119 }
120
121 /**
122 * Gets packet statuses and default values.
123 *
124 * @return PacketStatus[]
125 */
126 public static function getPacketStatuses(): array {
127 return [
128 PacketStatus::RECEIVED_DATA =>
129 new PacketStatus( PacketStatus::RECEIVED_DATA, __( 'Awaiting consignment', 'packeta' ), true ),
130 PacketStatus::ARRIVED =>
131 new PacketStatus( PacketStatus::ARRIVED, __( 'Accepted at depot', 'packeta' ), true ),
132 PacketStatus::PREPARED_FOR_DEPARTURE =>
133 new PacketStatus( PacketStatus::PREPARED_FOR_DEPARTURE, __( 'On the way', 'packeta' ), true ),
134 PacketStatus::DEPARTED =>
135 new PacketStatus( PacketStatus::DEPARTED, __( 'Departed from depot', 'packeta' ), true ),
136 PacketStatus::READY_FOR_PICKUP =>
137 new PacketStatus( PacketStatus::READY_FOR_PICKUP, __( 'Ready for pick-up', 'packeta' ), true ),
138 PacketStatus::HANDED_TO_CARRIER =>
139 new PacketStatus( PacketStatus::HANDED_TO_CARRIER, __( 'Handed over to carrier company', 'packeta' ), true ),
140 PacketStatus::DELIVERED =>
141 new PacketStatus( PacketStatus::DELIVERED, __( 'Delivered', 'packeta' ), false ),
142 PacketStatus::POSTED_BACK =>
143 new PacketStatus( PacketStatus::POSTED_BACK, __( 'Return (on the way back)', 'packeta' ), true ),
144 PacketStatus::RETURNED =>
145 new PacketStatus( PacketStatus::RETURNED, __( 'Returned to sender', 'packeta' ), false ),
146 PacketStatus::CANCELLED =>
147 new PacketStatus( PacketStatus::CANCELLED, __( 'Cancelled', 'packeta' ), false ),
148 PacketStatus::COLLECTED =>
149 new PacketStatus( PacketStatus::COLLECTED, __( 'Parcel has been collected', 'packeta' ), true ),
150 PacketStatus::UNKNOWN =>
151 new PacketStatus( PacketStatus::UNKNOWN, __( 'Unknown parcel status', 'packeta' ), false ),
152 ];
153 }
154 }
155