You are here

public function WebformCompleteSubmissionResource::get in Webform REST 8.2

Same name and namespace in other branches
  1. 4.x src/Plugin/rest/resource/WebformCompleteSubmissionResource.php \Drupal\webform_rest\Plugin\rest\resource\WebformCompleteSubmissionResource::get()

Retrieve webform fields and submission data.

Parameters

string $webform_id: Webform ID.

int $sid: Submission ID.

Return value

\Drupal\rest\ModifiedResourceResponse HTTP response object containing webform submission.

Throws

\Symfony\Component\HttpKernel\Exception\HttpException Throws HttpException in case of error.

File

src/Plugin/rest/resource/WebformCompleteSubmissionResource.php, line 36

Class

WebformCompleteSubmissionResource
Creates a resource for retrieving webform submission data and fields.

Namespace

Drupal\webform_rest\Plugin\rest\resource

Code

public function get($webform_id, $sid) {
  if (empty($webform_id) || empty($sid)) {
    $errors = [
      'error' => [
        'message' => 'Both webform ID and submission ID are required.',
      ],
    ];
    return new ModifiedResourceResponse($errors);
  }

  // Get webform submission results from Webform Submission Resource.
  $webformSubmissionResource = new WebformSubmissionResource($this->configuration, 'webform_rest_submission', $this->pluginDefinition, $this->serializerFormats, $this->logger);
  $webform_submission = $webformSubmissionResource
    ->get($webform_id, $sid);
  $submissionData = $webform_submission
    ->getResponseData();

  // Get webform fields/structure from Webform Fields Resource.
  $webformFieldsResource = new WebformFieldsResource($this->configuration, 'webform_rest_fields', $this->pluginDefinition, $this->serializerFormats, $this->logger);
  $fields = $webformFieldsResource
    ->get($webform_id);
  $fieldsData = $fields
    ->getResponseData();

  // Get webform entity.
  $webform = Webform::load($webform_id);

  // Get webform title.
  $title = $webform
    ->label();
  $result = $this
    ->buildResponse($fieldsData, $submissionData);
  return new ModifiedResourceResponse([
    'title' => $title,
    'processed_submission' => $result,
    'webform_submission' => $submissionData,
  ]);
}