contacts_events-8.x-1.x-dev/modules/villages/src/Entity/HasPitchesItemList.php
modules/villages/src/Entity/HasPitchesItemList.php
<?php namespace Drupal\contacts_events_villages\Entity; use Drupal\Core\Field\FieldItemList; use Drupal\Core\TypedData\ComputedItemListTrait; /** * Calculates whether a group has pitch requirements or not. * * @package Drupal\contacts_events_villages\Entity */ class HasPitchesItemList extends FieldItemList { use ComputedItemListTrait; /** * {@inheritdoc} */ protected function computeValue() { /** @var \Drupal\contacts_events_villages\Entity\VillageGroup $entity */ $entity = $this->getEntity(); $query = \Drupal::entityQuery('commerce_order_item'); $query->accessCheck(FALSE); $query->condition('type', 'ce_accom_camping'); $query->condition('order_id.entity.village_group.target_id', $entity->id()); $query->condition('order_id.entity.state', 'draft', '<>'); $query->condition('purchased_entity.entity:c_events_accommodation.pitch_size', 0, '>'); $query->count(); $count = $query->execute(); $this->list[0] = $this->createItem(0, $count > 0); } /** * Reset the computed value. */ public function resetValue() { $this->valueComputed = FALSE; } }