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

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

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