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) { | |
7cf463d9 M |
54 | //Limit this to relationship types from contact A to B |
55 | if (substr($k, -4) == "_a_b") { | |
56 | $roleTypes[substr($k, 0, strpos($k, '_'))] = $v; | |
57 | } | |
245992ca CR |
58 | } |
59 | ||
60 | return $roleTypes; | |
f1d7f287 CR |
61 | } |
62 | ||
245992ca CR |
63 | /** |
64 | * @inheritdoc | |
65 | */ | |
f1d7f287 CR |
66 | public function postProcess() { |
67 | $values = $this->controller->exportValues(); | |
68 | ||
cf0adfdc CR |
69 | $caseId = (int) $values['assign_to']; |
70 | $roleTypeId = (int) $values['role_type']; | |
f1d7f287 CR |
71 | $contacts = $this->_contactIds; |
72 | ||
73 | $clients = CRM_Case_BAO_Case::getCaseClients($caseId); | |
41cf58d3 | 74 | $caseRole = CRM_Case_BAO_Case::getCaseRoleDirection($caseId, $roleTypeId); |
f1d7f287 | 75 | |
be2fb01f | 76 | $params = [ |
f1d7f287 | 77 | 'case_id' => $caseId, |
cf0adfdc | 78 | 'relationship_type_id' => $roleTypeId, |
be2fb01f | 79 | ]; |
f1d7f287 | 80 | |
41cf58d3 AF |
81 | if ($caseRole[$roleTypeId]['direction'] == 'b_a') { |
82 | $params['contact_id_b'] = $clients[0]; | |
83 | $params['contact_id_a'] = $contacts; | |
84 | CRM_Contact_BAO_Relationship::createMultiple($params, 'b'); | |
85 | } | |
86 | elseif ($caseRole[$roleTypeId]['direction'] == 'a_b' || $caseRole[$roleTypeId]['direction'] = 'bidirectional') { | |
87 | $params['contact_id_a'] = $clients[0]; | |
88 | $params['contact_id_b'] = $contacts; | |
89 | CRM_Contact_BAO_Relationship::createMultiple($params, 'a'); | |
90 | } | |
f1d7f287 CR |
91 | |
92 | $url = CRM_Utils_System::url( | |
93 | 'civicrm/contact/view/case', | |
be2fb01f | 94 | [ |
44ca57d8 CR |
95 | 'cid' => $clients[0], |
96 | 'id' => $caseId, | |
97 | 'reset' => 1, | |
98 | 'action' => 'view', | |
be2fb01f | 99 | ] |
f1d7f287 CR |
100 | ); |
101 | CRM_Utils_System::redirect($url); | |
102 | } | |
cf0adfdc | 103 | |
f1d7f287 | 104 | } |