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 / PacketClaimSubmitter.php

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

222 lines 6.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Packetery\Module\Order;
6
7 use Packetery\Core\Api\Soap;
8 use Packetery\Core\CoreHelper;
9 use Packetery\Core\Log;
10 use Packetery\Module;
11 use Packetery\Module\Framework\WpAdapter;
12 use Packetery\Module\MessageManager;
13 use Packetery\Module\ModuleHelper;
14 use Packetery\Nette\Http\Request;
15
16 class PacketClaimSubmitter {
17
18 /**
19 * @var Soap\Client
20 */
21 private $soapApiClient;
22
23 /**
24 * @var Log\ILogger
25 */
26 private $logger;
27
28 /**
29 * @var Repository
30 */
31 private $orderRepository;
32
33 /**
34 * @var Request
35 */
36 private $request;
37
38 /**
39 * @var MessageManager
40 */
41 private $messageManager;
42
43 /**
44 * @var Module\Log\Page
45 */
46 private $logPage;
47
48 /**
49 * @var PacketActionsCommonLogic
50 */
51 private $commonLogic;
52
53 /**
54 * @var ModuleHelper
55 */
56 private $moduleHelper;
57
58 /**
59 * @var CoreHelper
60 */
61 private $coreHelper;
62
63 /**
64 * @var WpAdapter
65 */
66 private $wpAdapter;
67
68 public function __construct(
69 Soap\Client $soapApiClient,
70 Log\ILogger $logger,
71 Repository $orderRepository,
72 Request $request,
73 MessageManager $messageManager,
74 Module\Log\Page $logPage,
75 PacketActionsCommonLogic $commonLogic,
76 ModuleHelper $moduleHelper,
77 CoreHelper $coreHelper,
78 WpAdapter $wpAdapter
79 ) {
80 $this->soapApiClient = $soapApiClient;
81 $this->logger = $logger;
82 $this->orderRepository = $orderRepository;
83 $this->request = $request;
84 $this->messageManager = $messageManager;
85 $this->logPage = $logPage;
86 $this->commonLogic = $commonLogic;
87 $this->moduleHelper = $moduleHelper;
88 $this->coreHelper = $coreHelper;
89 $this->wpAdapter = $wpAdapter;
90 }
91
92 /**
93 * Process action
94 *
95 * @return void
96 */
97 public function processAction(): void {
98 $order = $this->commonLogic->getOrder();
99 $redirectTo = $this->request->getQuery( PacketActionsCommonLogic::PARAM_REDIRECT_TO );
100
101 $record = new Log\Record();
102 $record->action = Log\Record::ACTION_PACKET_CLAIM_SENDING;
103 if ( $order === null ) {
104 $record->status = Log\Record::STATUS_ERROR;
105 $record->orderId = null;
106 $record->title = __( 'Packet claim submission error', 'packeta' );
107 $record->params = [
108 'origin' => (string) $this->request->getOrigin(),
109 'errorMessage' => 'Order not found',
110 ];
111
112 $this->logger->add( $record );
113
114 $this->messageManager->flash_message( __( 'Order not found', 'packeta' ), MessageManager::TYPE_ERROR );
115 $this->commonLogic->redirectTo( $redirectTo, $order );
116
117 return;
118 }
119
120 $this->commonLogic->checkAction( PacketActionsCommonLogic::ACTION_SUBMIT_PACKET_CLAIM, $order );
121
122 $record->orderId = $order->getNumber();
123 if ( $order->isPacketClaimCreationPossible() === false ) {
124 $record->status = Log\Record::STATUS_ERROR;
125 $record->title = __( 'Packet claim submission error', 'packeta' );
126 $record->params = [
127 'origin' => (string) $this->request->getOrigin(),
128 'errorMessage' => 'Packet claim creation is not possible',
129 'packetStatus' => $order->getPacketStatus(),
130 'packetClaimId' => $order->getPacketClaimId(),
131 ];
132
133 $this->logger->add( $record );
134
135 $faultFlashMessage = sprintf( // translators: 1: link start 2: link end.
136 esc_html__( 'Packet claim creation is not possible. %1$sShow logs%2$s', 'packeta' ),
137 ...$this->moduleHelper->createLinkParts( $this->logPage->createLogListUrl( (int) $order->getNumber() ) )
138 );
139
140 $this->messageManager->flashMessageObject(
141 Module\Message::create()
142 ->setType( MessageManager::TYPE_ERROR )
143 ->setText( $faultFlashMessage )
144 ->setEscape( false )
145 );
146 $this->commonLogic->redirectTo( $redirectTo, $order );
147
148 return;
149 }
150
151 $request = new Soap\Request\CreatePacketClaimWithPassword( $order );
152 $response = $this->soapApiClient->createPacketClaimWithPassword( $request );
153 if ( $response->hasFault() ) {
154 $record->status = Log\Record::STATUS_ERROR;
155 $record->title = __( 'Packet claim could not be created.', 'packeta' );
156 $record->params = [
157 'request' => $request->getSubmittableData(),
158 'errorMessage' => $response->getFaultString(),
159 'errors' => $response->getValidationErrors(),
160 ];
161
162 $faultFlashMessage = sprintf( // translators: 1: link start 2: link end.
163 esc_html__( 'Packet claim could not be created. %1$sShow logs%2$s', 'packeta' ),
164 ...$this->moduleHelper->createLinkParts( $this->logPage->createLogListUrl( (int) $order->getNumber() ) )
165 );
166
167 $this->messageManager->flashMessageObject(
168 Module\Message::create()
169 ->setType( MessageManager::TYPE_ERROR )
170 ->setText( $faultFlashMessage )
171 ->setEscape( false )
172 );
173 } else {
174 $record->status = Log\Record::STATUS_SUCCESS;
175 $record->title = __( 'Packet claim was successfully created.', 'packeta' );
176 $record->params = [
177 'request' => $request->getSubmittableData(),
178 'packetId' => $response->getId(),
179 ];
180
181 $order->setPacketClaimId( $response->getId() );
182 $order->setPacketClaimTrackingUrl( $this->coreHelper->getTrackingUrl( $response->getId() ) );
183 $order->setPacketClaimPassword( $response->getPassword() );
184 $updatedRowCount = $this->orderRepository->save( $order );
185 if ( $updatedRowCount === false ) {
186 $this->messageManager->flash_message(
187 (string) $this->wpAdapter->__( 'An error occurred while saving the order. More details in WC log.', 'packeta' ),
188 MessageManager::TYPE_ERROR
189 );
190 }
191
192 $wcOrder = $this->orderRepository->getWcOrderById( (int) $order->getNumber() );
193 if ( $wcOrder !== null ) {
194 $wcOrder->add_order_note(
195 sprintf(
196 // translators: %s represents a packet tracking link.
197 __( 'Packeta: Packet claim %s has been created', 'packeta' ),
198 $this->moduleHelper->createHtmlLink( $order->getPacketClaimTrackingUrl(), $order->getPacketClaimBarcode() )
199 )
200 );
201 $wcOrder->save();
202 }
203
204 $flashMessage = sprintf( // translators: 1: link start 2: link end.
205 esc_html__( 'Packet claim submitted. %1$sShow logs%2$s', 'packeta' ),
206 ...$this->moduleHelper->createLinkParts( $this->logPage->createLogListUrl( (int) $order->getNumber() ) )
207 );
208
209 $this->messageManager->flashMessageObject(
210 Module\Message::create()
211 ->setText( $flashMessage )
212 ->setEscape( false )
213 );
214 }
215
216 $this->logger->add( $record );
217
218 $redirectTo = $this->request->getQuery( PacketActionsCommonLogic::PARAM_REDIRECT_TO );
219 $this->commonLogic->redirectTo( $redirectTo, $order );
220 }
221 }
222