Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Drupal\some_module;
- use Drupal\Core\Entity\EntityTypeManagerInterface;
- use Drupal\node\NodeInterface;
- /**
- * Class SomeOrgJobManger.
- */
- class SomeOrgJobManger {
- /**
- * The node storage service.
- *
- * @var \Drupal\Core\Entity\EntityStorageInterface
- */
- protected $nodeStorage;
- /**
- * A node entity query object.
- *
- * @var \Drupal\Core\Entity\Query\QueryAggregateInterface
- */
- protected $nodeAggregateQuery;
- /**
- * SomeOrgJobManger constructor.
- *
- * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
- * The entity storage interface.
- */
- public function __construct(EntityTypeManagerInterface $entity_type_manager) {
- $this->nodeStorage = $entity_type_manager->getStorage('node');
- $this->nodeAggregateQuery = $this->nodeStorage->getAggregateQuery();
- }
- /**
- *
- */
- public function getStatesWithAvailableJobs() {
- $result = [];
- $job_results = $this->nodeAggregateQuery
- ->aggregate('nid', 'MIN')
- ->groupBy('field_country_region')
- ->condition('status', NodeInterface::PUBLISHED)
- ->condition('type', 'job_posting')
- ->execute();
- foreach ($job_results as $job_info) {
- if (!empty($job_info['field_country_region_target_id'])) {
- $region_node = $this->nodeStorage->load($job_info['field_country_region_target_id']);
- $state_abbrev = $region_node->field_state_province_abbr->value;
- if (!empty($state_abbrev)) {
- $result[$state_abbrev] = $region_node->label();
- }
- }
- }
- // TODO: Remove the following proof of concept code.
- $nodeQuery = $this->nodeStorage->getQuery();
- $test_states = [];
- $test_result = $nodeQuery
- ->condition('type', 'job_posting')
- ->condition('status', NodeInterface::PUBLISHED)
- ->execute();
- foreach ($test_result as $nid) {
- $test_job_node = $this->nodeStorage->load($nid);
- if (!empty($test_job_node) && isset($test_job_node->field_country_region)) {
- $test_region = $test_job_node->field_country_region->entity;
- if (isset($test_region->field_state_province_abbr)) {
- $state_abbrev = $test_region->field_state_province_abbr->value;
- if (!empty($state_abbrev)) {
- $test_states[$state_abbrev] = $test_region->label();
- }
- }
- }
- }
- $diff = array_diff($result, $test_states);
- if (!empty($diff)) {
- drupal_set_message('SomeOrgJobManger::getStatesWithAvailableJobs is incorrect.');
- }
- // TODO: End remove.
- return $result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement