You are here

public function ExtendMerciLineItem::submitConfigurationForm in MERCI (Manage Equipment Reservations, Checkout and Inventory) 8.2

Form submission handler.

Parameters

array $form: An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Overrides PluginFormInterface::submitConfigurationForm

File

modules/merci_line_item/src/Plugin/Action/ExtendMerciLineItem.php, line 152

Class

ExtendMerciLineItem
Promotes a merci_line_item.

Namespace

Drupal\merci_line_item\Plugin\Action

Code

public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
  $this->configuration['extend_interval'] = $form_state
    ->getValue('extend_interval');
  $violations = array();
  if ($form_data = $form_state
    ->get('views_bulk_operations') and $form_data['preconfiguration']['validate_entities'] and $form_state
    ->getValue('override_validation') == FALSE) {
    $form_data = $form_state
      ->get('views_bulk_operations');
    if (!$form_data) {
      return;
    }
    $entity_ids = array();
    foreach ($form_data['list'] as $item) {
      $entity_ids[] = $item[0];
    }
    $entities = \Drupal::entityTypeManager()
      ->getStorage('merci_line_item')
      ->loadMultiple($entity_ids);
    $extend_interval = $form_state
      ->getValue('extend_interval');
    $date_field = 'merci_reservation_date';
    foreach ($entities as $entity) {
      $end_date = new DrupalDateTime($entity->{$date_field}
        ->getValue()[0]['end_value'] . ' ' . $extend_interval);
      $end_date_string = $end_date
        ->format(DATETIME_DATETIME_STORAGE_FORMAT);
      $date = $entity->{$date_field}
        ->getValue();
      $date[0]['end_value'] = $end_date_string;
      $entity->{$date_field}
        ->setValue($date);
      $violation = $entity
        ->validate();
      if ($violation
        ->has(0) == TRUE) {
        $violations[$entity
          ->id()] = $violation;
      }
    }
  }
  if (count($violations)) {
    $this
      ->getTempstore($form_data['view_id'], $form_data['display_id'])
      ->set('validation_errors', $violations);
    $form_state
      ->setRebuild();
  }
}