optionsProvider = $optionsProvider; $this->logger = $logger; $this->webRequestClient = $webRequestClient; $this->wpAdapter = $wpAdapter; $this->wcAdapter = $wcAdapter; } public function validate( PickupPointValidateRequest $request ): PickupPointValidateResponse { $apiKey = $this->optionsProvider->get_api_key(); try { $pickupPointValidate = PickupPointValidate::createWithValidApiKey( $this->webRequestClient, $apiKey ); } catch ( InvalidApiKeyException $exception ) { $record = $this->createPickUpPointValidateErrorRecord(); $record->params = [ 'errorMessage' => $this->wpAdapter->__( 'API credentials are not set correctly.', 'packeta' ), ]; $this->logger->add( $record ); return new PickupPointValidateResponse( true, [] ); } try { $validationResponse = $pickupPointValidate->validate( $request ); if ( $validationResponse->isValid() === false ) { $record = $this->createPickUpPointValidateErrorRecord(); } else { $record = new Record(); $record->action = Record::ACTION_PICKUP_POINT_VALIDATE; $record->status = Record::STATUS_SUCCESS; $record->title = $this->wpAdapter->__( 'Pickup point validated.', 'packeta' ); } $record->params = [ 'request' => $request->getSubmittableData(), 'isValid' => $validationResponse->isValid(), 'errors' => $validationResponse->getErrors(), ]; $this->logger->add( $record ); return $validationResponse; } catch ( RestException $exception ) { $record = $this->createPickUpPointValidateErrorRecord(); $record->params = [ 'errorMessage' => $exception->getMessage(), 'request' => $request->getSubmittableData(), ]; $this->logger->add( $record ); $this->wcAdapter->sessionSet( self::VALIDATION_HTTP_ERROR_SESSION_KEY, $exception->getMessage() ); return new PickupPointValidateResponse( true, [] ); } } private function createPickUpPointValidateErrorRecord(): Record { $record = new Record(); $record->action = Record::ACTION_PICKUP_POINT_VALIDATE; $record->status = Record::STATUS_ERROR; $record->title = $this->wpAdapter->__( 'Pickup point could not be validated.', 'packeta' ); return $record; } }