PluginProbe
Packeta / 2.1
Packeta v2.1
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 2.1, at src/Packetery/Module/Order/PacketClaimSubmitter.php

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