You are here

private function AdminForm::filterCaseSets in Webform CiviCRM Integration 8.5

Adjust case role fields to match creator/manager settings for a given case type

Parameters

int|null $case_type:

Return value

array

1 call to AdminForm::filterCaseSets()
AdminForm::buildCaseTab in src/AdminForm.php
Case settings FIXME: This is exactly the same code as buildGrantTab. More utilities and less boilerplate needed.

File

src/AdminForm.php, line 733
Webform CiviCRM module's admin form.

Class

AdminForm
@file Webform CiviCRM module's admin form.

Namespace

Drupal\webform_civicrm

Code

private function filterCaseSets($case_type) {
  $utils = \Drupal::service('webform_civicrm.utils');
  $case_sets = [];
  foreach ($this->sets as $sid => $set) {
    if ($set['entity_type'] == 'case' && (!$case_type || empty($set['sub_types']) || in_array($case_type, $set['sub_types']))) {
      if ($sid == 'caseRoles') {

        // Lookup case-role names
        $creator = $manager = NULL;
        $case_types = $utils
          ->wf_crm_apivalues('case_type', 'get', [
          'id' => $case_type,
        ]);
        foreach ($case_types as $type) {
          foreach ($type['definition']['caseRoles'] as $role) {
            if (!empty($role['creator'])) {
              $creator = $creator == $role['name'] || $creator === NULL ? $role['name'] : FALSE;
            }
            if (!empty($role['manager'])) {
              $manager = $manager == $role['name'] || $manager === NULL ? $role['name'] : FALSE;
            }
          }
        }
        if ($creator) {
          $rel_type = $utils
            ->wf_civicrm_api('relationshipType', 'getsingle', [
            'name_b_a' => $creator,
          ]);
          $label = $creator == $manager ? ts('Case # Creator/Manager') : ts('Case # Creator');
          $set['fields']['case_creator_id']['name'] = $rel_type['label_b_a'] . ' (' . $label . ')';
          unset($set['fields']['case_role_' . $rel_type['id']]);
        }
        if ($manager && $manager != $creator) {
          $rel_type = $utils
            ->wf_civicrm_api('relationshipType', 'getsingle', [
            'name_b_a' => $manager,
          ]);
          $set['fields']['case_role_' . $rel_type['id']]['name'] .= ' (' . ts('Case # Manager') . ')';
        }
      }
      $case_sets[$sid] = $set;
    }
  }
  return $case_sets;
}