4 * Class CRM_Case_Form_AddToCaseAsRole
6 class CRM_Case_Form_AddToCaseAsRole
extends CRM_Contact_Form_Task
{
11 public function buildQuickForm() {
13 $roleTypes = $this->getRoleTypes();
17 ts('Relationship Type'),
18 ['' => ts('- select type -')] +
$roleTypes,
20 ['class' => 'crm-select2 twenty']
33 'name' => ts('Submit'),
38 'name' => ts('Cancel'),
44 * Returns list of configured role types for individuals.
49 private function getRoleTypes() {
50 $relType = CRM_Contact_BAO_Relationship
::getRelationType('Individual');
53 foreach ($relType as $k => $v) {
54 $roleTypes[substr($k, 0, strpos($k, '_'))] = $v;
63 public function postProcess() {
64 $values = $this->controller
->exportValues();
66 $caseId = (int) $values['assign_to'];
67 $roleTypeId = (int) $values['role_type'];
68 $contacts = $this->_contactIds
;
70 $clients = CRM_Case_BAO_Case
::getCaseClients($caseId);
71 $caseRole = CRM_Case_BAO_Case
::getCaseRoleDirection($caseId, $roleTypeId);
75 'relationship_type_id' => $roleTypeId,
78 if ($caseRole[$roleTypeId]['direction'] == 'b_a') {
79 $params['contact_id_b'] = $clients[0];
80 $params['contact_id_a'] = $contacts;
81 CRM_Contact_BAO_Relationship
::createMultiple($params, 'b');
83 elseif ($caseRole[$roleTypeId]['direction'] == 'a_b' ||
$caseRole[$roleTypeId]['direction'] = 'bidirectional') {
84 $params['contact_id_a'] = $clients[0];
85 $params['contact_id_b'] = $contacts;
86 CRM_Contact_BAO_Relationship
::createMultiple($params, 'a');
89 $url = CRM_Utils_System
::url(
90 'civicrm/contact/view/case',
98 CRM_Utils_System
::redirect($url);