<?php

declare(strict_types=1);

namespace Drupal\farm_structure;

use Drupal\Core\Entity\ContentEntityInterface;
use Drupal\Core\Field\FieldStorageDefinitionInterface;

/**
 * Helper methods for farm_structure.
 */
class FarmStructureHelper {

  /**
   * Structure type options helper.
   *
   * @return array
   *   Returns an array of structure types for use in form select options.
   */
  public static function structureTypeOptions(): array {
    /** @var \Drupal\farm_structure\Entity\FarmStructureTypeInterface[] $types */
    $types = \Drupal::entityTypeManager()->getStorage('structure_type')->loadMultiple();
    $options = [];
    foreach ($types as $id => $type) {
      $options[$id] = $type->getLabel();
    }
    return $options;
  }

  /**
   * Allowed values callback function for the structure type field.
   *
   * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $definition
   *   The field definition.
   * @param \Drupal\Core\Entity\ContentEntityInterface|null $entity
   *   The entity being created if applicable.
   * @param bool $cacheable
   *   Boolean indicating if the allowed values can be cached. Defaults to TRUE.
   *
   * @return array
   *   Returns an array of allowed values for use in form select options.
   */
  public static function structureTypeAllowedValues(FieldStorageDefinitionInterface $definition, ?ContentEntityInterface $entity = NULL, bool &$cacheable = TRUE): array {
    return FarmStructureHelper::structureTypeOptions();
  }

}
