<?php


use \Drupal\Core\Entity\Sql\SqlContentEntityStorageSchemaConverter;

function opencase_entities_update_80197() {
  //check if the table exists first.  If not, then create the entity.
  if(!db_table_exists('oc_organisation')) {
    \Drupal::entityTypeManager()->clearCachedDefinitions();
    \Drupal::entityDefinitionUpdateManager()
      ->installEntityType(\Drupal::entityTypeManager()->getDefinition('oc_organisation'));
  }
  else {
    return 'Organisation entity already exists';
  }
}

function opencase_entities_update_80192(&$sandbox) {
  $schema_converter = new SqlContentEntityStorageSchemaConverter(
    'oc_actor',
    \Drupal::entityTypeManager(),
    \Drupal::entityDefinitionUpdateManager(),
    \Drupal::service('entity.last_installed_schema.repository'),
    \Drupal::keyValue('entity.storage_schema.sql'),
    \Drupal::database()
  );

  $contact_details_fields = ['email', 'phone', 'phone2', 'postal_address', 'post_code'];
  $schema_converter->convertToRevisionable($sandbox, $contact_details_fields);
}

function opencase_entities_update_8016() {
  $update_manager = \Drupal::entityDefinitionUpdateManager();
  $definition = $update_manager->getFieldStorageDefinition('activity_date_time', 'oc_activity');
  $update_manager->updateFieldStorageDefinition($definition);
}

/**
 * Add 'activity_date_time' field to 'oc_activity' entities.
 */
function opencase_entities_update_8003() {
  $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('datetime')
      ->setLabel(t('Date and time'))
      ->setRevisionable(TRUE)
      ->setDefaultValueCallback('\Drupal\opencase_entities\Entity\OCActivity::currentDateTime')
      ->setDisplayOptions('view', [
        'type' => 'datetime_default',
        'settings' => [
          'format_type' => 'medium',
        ],
        'label' => 'above',
        'weight' => -3,
      ])
      ->setDisplayOptions('form', [
        'type' => 'datetime_default',
        'weight' => -3,
      ]);

  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('activity_date_time', 'oc_activity', 'oc_activity', $storage_definition);
}