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); | |
71 | ||
be2fb01f | 72 | $params = [ |
f1d7f287 CR |
73 | 'contact_id_a' => $clients[0], |
74 | 'contact_id_b' => $contacts, | |
75 | 'case_id' => $caseId, | |
cf0adfdc | 76 | 'relationship_type_id' => $roleTypeId, |
be2fb01f | 77 | ]; |
f1d7f287 CR |
78 | |
79 | CRM_Contact_BAO_Relationship::createMultiple($params, 'a'); | |
80 | ||
81 | $url = CRM_Utils_System::url( | |
82 | 'civicrm/contact/view/case', | |
be2fb01f | 83 | [ |
44ca57d8 CR |
84 | 'cid' => $clients[0], |
85 | 'id' => $caseId, | |
86 | 'reset' => 1, | |
87 | 'action' => 'view', | |
be2fb01f | 88 | ] |
f1d7f287 CR |
89 | ); |
90 | CRM_Utils_System::redirect($url); | |
91 | } | |
cf0adfdc | 92 | |
f1d7f287 | 93 | } |