Merge pull request #14222 from mfb/debug-var
[civicrm-core.git] / CRM / Case / Form / AddToCaseAsRole.php
1 <?php
2
3 /**
4 * Class CRM_Case_Form_AddToCaseAsRole
5 */
6 class CRM_Case_Form_AddToCaseAsRole extends CRM_Contact_Form_Task {
7
8 /**
9 * @inheritdoc
10 */
11 public function buildQuickForm() {
12
13 $roleTypes = $this->getRoleTypes();
14 $this->add(
15 'select',
16 'role_type',
17 ts('Relationship Type'),
18 ['' => ts('- select type -')] + $roleTypes,
19 TRUE,
20 ['class' => 'crm-select2 twenty']
21 );
22
23 $this->addEntityRef(
24 'assign_to',
25 ts('Assign to'),
26 ['entity' => 'Case'],
27 TRUE
28 );
29
30 $this->addButtons([
31 [
32 'type' => 'submit',
33 'name' => ts('Submit'),
34 'isDefault' => TRUE,
35 ],
36 [
37 'type' => 'cancel',
38 'name' => ts('Cancel'),
39 ],
40 ]);
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');
51 $roleTypes = [];
52
53 foreach ($relType as $k => $v) {
54 $roleTypes[substr($k, 0, strpos($k, '_'))] = $v;
55 }
56
57 return $roleTypes;
58 }
59
60 /**
61 * @inheritdoc
62 */
63 public function postProcess() {
64 $values = $this->controller->exportValues();
65
66 $caseId = (int) $values['assign_to'];
67 $roleTypeId = (int) $values['role_type'];
68 $contacts = $this->_contactIds;
69
70 $clients = CRM_Case_BAO_Case::getCaseClients($caseId);
71 $caseRole = CRM_Case_BAO_Case::getCaseRoleDirection($caseId, $roleTypeId);
72
73 $params = [
74 'case_id' => $caseId,
75 'relationship_type_id' => $roleTypeId,
76 ];
77
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 }
88
89 $url = CRM_Utils_System::url(
90 'civicrm/contact/view/case',
91 [
92 'cid' => $clients[0],
93 'id' => $caseId,
94 'reset' => 1,
95 'action' => 'view',
96 ]
97 );
98 CRM_Utils_System::redirect($url);
99 }
100
101 }