PluginProbe
Packeta / 2.0.9
Packeta v2.0.9
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 2.0.9, at src/Packetery/Module/Order/WcOrderActions.php

115 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 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\Options\OptionsProvider;
14 use WC_Logger;
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 * Constructor.
46 *
47 * @param Log\ILogger $logger Logger.
48 * @param OptionsProvider $optionsProvider Options provider.
49 * @param Repository $orderRepository Order repository.
50 */
51 public function __construct(
52 Log\ILogger $logger,
53 OptionsProvider $optionsProvider,
54 Repository $orderRepository
55 ) {
56 $this->logger = $logger;
57 $this->optionsProvider = $optionsProvider;
58 $this->orderRepository = $orderRepository;
59 }
60
61 /**
62 * Updates order status based on packet status.
63 *
64 * @param string $orderId Order id.
65 * @param string $packetStatus Packet status.
66 *
67 * @return void
68 */
69 public function updateOrderStatus( string $orderId, string $packetStatus ): void {
70 if ( ! $this->optionsProvider->isOrderStatusChangeAllowed() ) {
71 return;
72 }
73
74 $autoOrderStatus = $this->optionsProvider->getAutoOrderStatusFromMapping( $packetStatus );
75 if ( $autoOrderStatus === null ) {
76 return;
77 }
78
79 $validAutoOrderStatus = $this->optionsProvider->getValidAutoOrderStatusFromMapping( $packetStatus );
80 if ( $validAutoOrderStatus === '' ) {
81 $record = new Log\Record();
82 $record->action = Log\Record::ACTION_ORDER_STATUS_CHANGE;
83 $record->status = Log\Record::STATUS_ERROR;
84
85 $record->title = sprintf(
86 // translators: %s represents unknown order status.
87 __( 'Order status has not been changed, status "%s" doesn\'t exist.', 'packeta' ),
88 $autoOrderStatus
89 );
90 $record->orderId = $orderId;
91 $record->params = [
92 'packetStatus' => $packetStatus,
93 ];
94 $this->logger->add( $record );
95
96 return;
97 }
98
99 $wcOrder = $this->orderRepository->getWcOrderById( (int) $orderId );
100 if ( $wcOrder === null ) {
101 /**
102 * WC logger.
103 *
104 * @var WC_Logger $wcLogger
105 */
106 $wcLogger = wc_get_logger();
107 $wcLogger->warning( sprintf( 'WC order number %s could not be instantiated.', $orderId ), [ 'source' => 'packeta' ] );
108
109 return;
110 }
111
112 $wcOrder->update_status( $validAutoOrderStatus );
113 }
114 }
115