Commit | Line | Data |
---|---|---|
f1d7f287 CR |
1 | <?php |
2 | ||
245992ca CR |
3 | /** |
4 | * Class CRM_Case_Form_AddToCaseAsRole | |
5 | */ | |
f1d7f287 | 6 | class CRM_Case_Form_AddToCaseAsRole extends CRM_Contact_Form_Task { |
245992ca CR |
7 | |
8 | /** | |
9 | * @inheritdoc | |
10 | */ | |
f1d7f287 | 11 | public function buildQuickForm() { |
245992ca | 12 | |
245992ca | 13 | $roleTypes = $this->getRoleTypes(); |
245992ca CR |
14 | $this->add( |
15 | 'select', | |
16 | 'role_type', | |
17 | ts('Relationship Type'), | |
be2fb01f | 18 | ['' => ts('- select type -')] + $roleTypes, |
66504fe4 | 19 | TRUE, |
be2fb01f | 20 | ['class' => 'crm-select2 twenty'] |
245992ca CR |
21 | ); |
22 | ||
66504fe4 CR |
23 | $this->addEntityRef( |
24 | 'assign_to', | |
25 | ts('Assign to'), | |
be2fb01f | 26 | ['entity' => 'Case'], |
66504fe4 CR |
27 | TRUE |
28 | ); | |
29 | ||
be2fb01f CW |
30 | $this->addButtons([ |
31 | [ | |
245992ca CR |
32 | 'type' => 'submit', |
33 | 'name' => ts('Submit'), | |
34 | 'isDefault' => TRUE, | |
be2fb01f CW |
35 | ], |
36 | [ | |
66504fe4 CR |
37 | 'type' => 'cancel', |
38 | 'name' => ts('Cancel'), | |
be2fb01f CW |
39 | ], |
40 | ]); | |
245992ca CR |
41 | } |
42 | ||
43 | /** | |
44 | * Returns list of configured role types for individuals. | |
45 | * | |
46 | * @return array | |
47 | * List of role types | |
48 | */ | |
49 | private function getRoleTypes() { | |
50 | $relType = CRM_Contact_BAO_Relationship::getRelationType('Individual'); | |
be2fb01f | 51 | $roleTypes = []; |
245992ca CR |
52 | |
53 | foreach ($relType as $k => $v) { | |
54 | $roleTypes[substr($k, 0, strpos($k, '_'))] = $v; | |
55 | } | |
56 | ||
57 | return $roleTypes; | |
f1d7f287 CR |
58 | } |
59 | ||
245992ca CR |
60 | /** |
61 | * @inheritdoc | |
62 | */ | |
f1d7f287 CR |
63 | public function postProcess() { |
64 | $values = $this->controller->exportValues(); | |
65 | ||
cf0adfdc CR |
66 | $caseId = (int) $values['assign_to']; |
67 | $roleTypeId = (int) $values['role_type']; | |
f1d7f287 CR |
68 | $contacts = $this->_contactIds; |
69 | ||
70 | $clients = CRM_Case_BAO_Case::getCaseClients($caseId); | |
41cf58d3 | 71 | $caseRole = CRM_Case_BAO_Case::getCaseRoleDirection($caseId, $roleTypeId); |
f1d7f287 | 72 | |
be2fb01f | 73 | $params = [ |
f1d7f287 | 74 | 'case_id' => $caseId, |
cf0adfdc | 75 | 'relationship_type_id' => $roleTypeId, |
be2fb01f | 76 | ]; |
f1d7f287 | 77 | |
41cf58d3 AF |
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'); | |
82 | } | |
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'); | |
87 | } | |
f1d7f287 CR |
88 | |
89 | $url = CRM_Utils_System::url( | |
90 | 'civicrm/contact/view/case', | |
be2fb01f | 91 | [ |
44ca57d8 CR |
92 | 'cid' => $clients[0], |
93 | 'id' => $caseId, | |
94 | 'reset' => 1, | |
95 | 'action' => 'view', | |
be2fb01f | 96 | ] |
f1d7f287 CR |
97 | ); |
98 | CRM_Utils_System::redirect($url); | |
99 | } | |
cf0adfdc | 100 | |
f1d7f287 | 101 | } |