PluginProbe
Packeta / trunk
Packeta vtrunk
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 / WcOrderActions.php

WcOrderActions.php in Packeta trunk, at src/Packetery/Module/Order/WcOrderActions.php

117 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class WcOrderActions
4 *
5 * @package Packetery
6 */
7
8 declare( strict_types=1 );
9
10 namespace Packetery\Module\Order;
11
12 use Packetery\Core\Log;
13 use Packetery\Module\Framework\WcAdapter;
14 use Packetery\Module\Options\OptionsProvider;
15
16 /**
17 * Class WcOrderActions
18 *
19 * @package Packetery
20 */
21 class WcOrderActions {
22
23 /**
24 * Options provider.
25 *
26 * @var OptionsProvider
27 */
28 private $optionsProvider;
29
30 /**
31 * Logger.
32 *
33 * @var Log\ILogger
34 */
35 private $logger;
36
37 /**
38 * Order repository.
39 *
40 * @var Repository
41 */
42 private $orderRepository;
43
44 /**
45 * @var WcAdapter
46 */
47 private $wcAdapter;
48
49 /**
50 * Constructor.
51 *
52 * @param Log\ILogger $logger Logger.
53 * @param OptionsProvider $optionsProvider Options provider.
54 * @param Repository $orderRepository Order repository.
55 */
56 public function __construct(
57 Log\ILogger $logger,
58 OptionsProvider $optionsProvider,
59 Repository $orderRepository,
60 WcAdapter $wcAdapter
61 ) {
62 $this->logger = $logger;
63 $this->optionsProvider = $optionsProvider;
64 $this->orderRepository = $orderRepository;
65 $this->wcAdapter = $wcAdapter;
66 }
67
68 /**
69 * Updates order status based on packet status.
70 *
71 * @param string $orderId Order id.
72 * @param string $packetStatus Packet status.
73 *
74 * @return void
75 */
76 public function updateOrderStatus( string $orderId, string $packetStatus ): void {
77 if ( ! $this->optionsProvider->isOrderStatusChangeAllowed() ) {
78 return;
79 }
80
81 $autoOrderStatus = $this->optionsProvider->getAutoOrderStatusFromMapping( $packetStatus );
82 if ( $autoOrderStatus === null ) {
83 return;
84 }
85
86 $validAutoOrderStatus = $this->optionsProvider->getValidAutoOrderStatusFromMapping( $packetStatus );
87 if ( $validAutoOrderStatus === '' ) {
88 $record = new Log\Record();
89 $record->action = Log\Record::ACTION_ORDER_STATUS_CHANGE;
90 $record->status = Log\Record::STATUS_ERROR;
91
92 $record->title = sprintf(
93 // translators: %s represents unknown order status.
94 __( 'Order status has not been changed, status "%s" doesn\'t exist.', 'packeta' ),
95 $autoOrderStatus
96 );
97 $record->orderId = $orderId;
98 $record->params = [
99 'packetStatus' => $packetStatus,
100 ];
101 $this->logger->add( $record );
102
103 return;
104 }
105
106 $wcOrder = $this->orderRepository->getWcOrderById( (int) $orderId );
107 if ( $wcOrder === null ) {
108 $wcLogger = $this->wcAdapter->getLogger();
109 $wcLogger->warning( sprintf( 'WC order number %s could not be instantiated.', $orderId ), [ 'source' => 'packeta' ] );
110
111 return;
112 }
113
114 $wcOrder->update_status( $validAutoOrderStatus );
115 }
116 }
117