Merge pull request #23707 from eileenmcnaughton/import_activity
[civicrm-core.git] / CRM / Case / Form / AddToCaseAsRole.php
CommitLineData
f1d7f287
CR
1<?php
2
245992ca
CR
3/**
4 * Class CRM_Case_Form_AddToCaseAsRole
5 */
f1d7f287 6class 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}