dhis2-8.x-1.x-dev/src/OrganisationUnitListBuilder.php
src/OrganisationUnitListBuilder.php
<?php
namespace Drupal\dhis;
use Drupal\Core\Link;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Url;
/**
* Defines a class to build a listing of Organisation unit entities.
*
* @ingroup dhis
*/
class OrganisationUnitListBuilder extends EntityListBuilder
{
use LinkGeneratorTrait;
/**
* {@inheritdoc}
*/
public function buildHeader()
{
$header['id'] = $this->t('Organisation unit ID');
$header['name'] = $this->t('Display Name');
$header['orgunituid'] = $this->t('Org unit uid');
$header['status'] = $this->t('Synchronizable');
return $header + parent::buildHeader();
}
/**
* {@inheritdoc}
*/
public function buildRow(EntityInterface $entity)
{
/* @var $entity \Drupal\dhis\Entity\OrganisationUnit */
$row['id'] = $entity->id();
$row['name'] = Link::fromTextAndUrl($entity->label(), new Url(
'entity.organisation_unit.edit_form', [
'organisation_unit' => $entity->id(),
]
));
$row['orgunituid'] = $entity->getOrgunitUid();
$row['status'] = $entity->isPublished();
return $row + parent::buildRow($entity);
}
public function render()
{
$form = \Drupal::formBuilder()->getForm('Drupal\dhis\Form\OrganisationUnitFilterForm');
$build['form'] = $form;
$build += parent::render();
return $build;
}
protected function getEntityIds()
{
$params = \Drupal::request()->query->all();
$form_id = $params['form_id'];
if ($form_id && $form_id === 'OrganisationUnitFilterForm') {
$query = \Drupal::entityQuery($this->entityTypeId);
$query->condition('name', $params['name'], 'CONTAINS');
if ($this->limit) {
$query->pager($this->limit);
}
$result = $query->execute();
} else {
$result = parent::getEntityIds();
}
return $result;
}
}
