apiSoapClient = $apiSoapClient; $this->logger = $logger; $this->optionsProvider = $optionsProvider; $this->orderRepository = $orderRepository; } /** * Synchronizes packets. * * @return void */ public function syncStatuses(): void { $results = $this->orderRepository->findStatusSyncingOrders( $this->optionsProvider->getMaxStatusSyncingPackets() ); foreach ( $results as $order ) { $packetId = $order->getPacketId(); $request = new Api\Soap\Request\PacketStatus( (int) $packetId ); $response = $this->apiSoapClient->packetStatus( $request ); if ( $response->hasFault() ) { $record = new Log\Record(); $record->action = Log\Record::ACTION_PACKET_STATUS_SYNC; $record->status = Log\Record::STATUS_ERROR; $record->title = __( 'packetStatusSyncErrorLogTitle', 'packetery' ); $record->params = [ 'orderId' => $order->getNumber(), 'packetId' => $request->getPacketId(), 'errorMessage' => $response->getFaultString(), ]; $this->logger->add( $record ); if ( $response->hasWrongPassword() ) { break; } continue; } if ( $response->getCodeText() === $order->getPacketStatus() ) { continue; } $order->setPacketStatus( $response->getCodeText() ); $this->orderRepository->save( $order ); } } }