Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
bc77d7c0 | 4 | | Copyright CiviCRM LLC. All rights reserved. | |
6a488035 | 5 | | | |
bc77d7c0 TO |
6 | | This work is published under the GNU AGPLv3 license with some | |
7 | | permitted exceptions and without any warranty. For full license | | |
8 | | and copyright information, see https://civicrm.org/licensing | | |
6a488035 | 9 | +--------------------------------------------------------------------+ |
d25dd0ee | 10 | */ |
6a488035 TO |
11 | |
12 | /** | |
13 | * | |
14 | * @package CRM | |
ca5cec67 | 15 | * @copyright CiviCRM LLC https://civicrm.org/licensing |
6a488035 TO |
16 | * |
17 | */ | |
18 | ||
19 | /** | |
3924e596 | 20 | * This class contains all case related functions that are called using AJAX |
6a488035 TO |
21 | */ |
22 | class CRM_Case_Page_AJAX { | |
23 | ||
3924e596 CW |
24 | /** |
25 | * @throws \CRM_Core_Exception | |
26 | */ | |
00be9182 | 27 | public function processCaseTags() { |
6a488035 | 28 | |
077dbf5e | 29 | $caseId = CRM_Utils_Type::escape($_POST['case_id'], 'Positive'); |
6a488035 | 30 | $tags = CRM_Utils_Type::escape($_POST['tag'], 'String'); |
6fd5424b | 31 | $tagList = $_POST['taglist']; |
6a488035 | 32 | |
077dbf5e CW |
33 | if (!CRM_Case_BAO_Case::accessCase($caseId)) { |
34 | CRM_Utils_System::permissionDenied(); | |
6a488035 TO |
35 | } |
36 | ||
be2fb01f | 37 | $tagIds = []; |
6a488035 TO |
38 | if ($tags) { |
39 | $tagIds = explode(',', $tags); | |
40 | } | |
41 | ||
be2fb01f | 42 | $params = [ |
79564bd4 CW |
43 | 'entity_id' => $caseId, |
44 | 'entity_table' => 'civicrm_case', | |
be2fb01f | 45 | ]; |
6a488035 | 46 | |
79564bd4 | 47 | CRM_Core_BAO_EntityTag::del($params); |
6a488035 | 48 | |
79564bd4 CW |
49 | foreach ($tagIds as $tagid) { |
50 | if (is_numeric($tagid)) { | |
51 | $params['tag_id'] = $tagid; | |
52 | CRM_Core_BAO_EntityTag::add($params); | |
6a488035 TO |
53 | } |
54 | } | |
55 | ||
6fd5424b | 56 | if (!empty($tagList)) { |
79564bd4 | 57 | CRM_Core_Form_Tag::postProcess($tagList, $caseId, 'civicrm_case'); |
6fd5424b | 58 | } |
59 | ||
6a488035 TO |
60 | $session = CRM_Core_Session::singleton(); |
61 | ||
be2fb01f | 62 | $activityParams = []; |
6a488035 | 63 | $activityParams['source_contact_id'] = $session->get('userID'); |
9c248a42 | 64 | $activityParams['activity_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Case Tags'); |
6a488035 | 65 | $activityParams['activity_date_time'] = date('YmdHis'); |
9c248a42 | 66 | $activityParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed'); |
6a488035 TO |
67 | $activityParams['case_id'] = $caseId; |
68 | $activityParams['is_auto'] = 0; | |
69 | $activityParams['subject'] = 'Change Case Tags'; | |
70 | ||
71 | $activity = CRM_Activity_BAO_Activity::create($activityParams); | |
72 | ||
be2fb01f | 73 | $caseParams = [ |
6a488035 TO |
74 | 'activity_id' => $activity->id, |
75 | 'case_id' => $caseId, | |
be2fb01f | 76 | ]; |
6a488035 TO |
77 | |
78 | CRM_Case_BAO_Case::processCaseActivity($caseParams); | |
79 | ||
80 | echo 'true'; | |
81 | CRM_Utils_System::civiExit(); | |
82 | } | |
83 | ||
3924e596 CW |
84 | /** |
85 | * @throws \CiviCRM_API3_Exception | |
86 | */ | |
00be9182 | 87 | public function caseDetails() { |
077dbf5e CW |
88 | $caseId = CRM_Utils_Type::escape($_GET['caseId'], 'Positive'); |
89 | ||
be2fb01f | 90 | $case = civicrm_api3('Case', 'getsingle', [ |
0a1a8b63 CW |
91 | 'id' => $caseId, |
92 | 'check_permissions' => TRUE, | |
f157740d SL |
93 | 'return' => ['subject', 'case_type_id', 'status_id', 'start_date', 'end_date'], |
94 | ]); | |
077dbf5e | 95 | |
3924e596 CW |
96 | $caseStatuses = CRM_Case_PseudoConstant::caseStatus(); |
97 | $caseTypes = CRM_Case_PseudoConstant::caseType('title', FALSE); | |
98 | $caseDetails = "<table><tr><td>" . ts('Case Subject') . "</td><td>{$case['subject']}</td></tr> | |
99 | <tr><td>" . ts('Case Type') . "</td><td>{$caseTypes[$case['case_type_id']]}</td></tr> | |
100 | <tr><td>" . ts('Case Status') . "</td><td>{$caseStatuses[$case['status_id']]}</td></tr> | |
101 | <tr><td>" . ts('Case Start Date') . "</td><td>" . CRM_Utils_Date::customFormat($case['start_date']) . "</td></tr> | |
102 | <tr><td>" . ts('Case End Date') . "</td><td></td></tr>" . CRM_Utils_Date::customFormat($case['end_date']) . "</table>"; | |
103 | ||
104 | if (CRM_Utils_Array::value('snippet', $_GET) == 'json') { | |
105 | CRM_Core_Page_AJAX::returnJsonResponse($caseDetails); | |
6a488035 | 106 | } |
3924e596 CW |
107 | |
108 | echo $caseDetails; | |
6a488035 TO |
109 | CRM_Utils_System::civiExit(); |
110 | } | |
111 | ||
3924e596 CW |
112 | /** |
113 | * @throws \CRM_Core_Exception | |
114 | */ | |
00be9182 | 115 | public function addClient() { |
077dbf5e CW |
116 | $caseId = CRM_Utils_Type::escape($_POST['caseID'], 'Positive'); |
117 | $contactId = CRM_Utils_Type::escape($_POST['contactID'], 'Positive'); | |
118 | ||
119 | if (!$contactId || !CRM_Case_BAO_Case::accessCase($caseId)) { | |
120 | CRM_Utils_System::permissionDenied(); | |
121 | } | |
6a488035 | 122 | |
be2fb01f | 123 | $params = [ |
6a488035 TO |
124 | 'case_id' => $caseId, |
125 | 'contact_id' => $contactId, | |
be2fb01f | 126 | ]; |
6a488035 | 127 | |
ff9340a4 | 128 | CRM_Case_BAO_CaseContact::create($params); |
6a488035 | 129 | |
44466d80 KJ |
130 | // add case relationships |
131 | CRM_Case_BAO_Case::addCaseRelationships($caseId, $contactId); | |
132 | ||
6a488035 TO |
133 | $session = CRM_Core_Session::singleton(); |
134 | ||
be2fb01f | 135 | $activityParams = []; |
6a488035 | 136 | $activityParams['source_contact_id'] = $session->get('userID'); |
9c248a42 | 137 | $activityParams['activity_type_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Add Client To Case'); |
6a488035 | 138 | $activityParams['activity_date_time'] = date('YmdHis'); |
9c248a42 | 139 | $activityParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed'); |
6a488035 TO |
140 | $activityParams['case_id'] = $caseId; |
141 | $activityParams['is_auto'] = 0; | |
142 | $activityParams['subject'] = 'Client Added To Case'; | |
143 | ||
144 | $activity = CRM_Activity_BAO_Activity::create($activityParams); | |
145 | ||
be2fb01f | 146 | $caseParams = [ |
6a488035 TO |
147 | 'activity_id' => $activity->id, |
148 | 'case_id' => $caseId, | |
be2fb01f | 149 | ]; |
6a488035 TO |
150 | |
151 | CRM_Case_BAO_Case::processCaseActivity($caseParams); | |
ecdef330 | 152 | CRM_Utils_JSON::output(TRUE); |
6a488035 | 153 | } |
4cd35744 KJ |
154 | |
155 | /** | |
fe482240 | 156 | * Delete relationships specific to case and relationship type. |
4cd35744 | 157 | */ |
00be9182 | 158 | public static function deleteCaseRoles() { |
353ffa53 | 159 | $caseId = CRM_Utils_Type::escape($_POST['case_id'], 'Positive'); |
3b1c37fe CW |
160 | $cid = CRM_Utils_Type::escape($_POST['cid'], 'Positive'); |
161 | $relType = CRM_Utils_Request::retrieve('rel_type', 'String', CRM_Core_DAO::$_nullObject, TRUE); | |
077dbf5e | 162 | |
3b1c37fe | 163 | if (!$cid || !CRM_Case_BAO_Case::accessCase($caseId)) { |
077dbf5e CW |
164 | CRM_Utils_System::permissionDenied(); |
165 | } | |
4cd35744 | 166 | |
3b1c37fe | 167 | list($relTypeId, $a, $b) = explode('_', $relType); |
4cd35744 | 168 | |
3b1c37fe | 169 | CRM_Case_BAO_Case::endCaseRole($caseId, $b, $cid, $relTypeId); |
4cd35744 KJ |
170 | CRM_Utils_System::civiExit(); |
171 | } | |
96025800 | 172 | |
5f1c8c57 | 173 | public static function getCases() { |
be2fb01f | 174 | $requiredParameters = [ |
5f1c8c57 | 175 | 'type' => 'String', |
be2fb01f CW |
176 | ]; |
177 | $optionalParameters = [ | |
76ec1160 CW |
178 | 'case_type_id' => 'CommaSeparatedIntegers', |
179 | 'status_id' => 'CommaSeparatedIntegers', | |
5f1c8c57 | 180 | 'all' => 'Positive', |
be2fb01f | 181 | ]; |
5f1c8c57 | 182 | $params = CRM_Core_Page_AJAX::defaultSortAndPagerParams(); |
183 | $params += CRM_Core_Page_AJAX::validateParams($requiredParameters, $optionalParameters); | |
184 | ||
1d154485 | 185 | $allCases = !empty($params['all']); |
5f1c8c57 | 186 | |
187 | $cases = CRM_Case_BAO_Case::getCases($allCases, $params); | |
188 | ||
be2fb01f | 189 | $casesDT = [ |
5f1c8c57 | 190 | 'recordsFiltered' => $cases['total'], |
191 | 'recordsTotal' => $cases['total'], | |
be2fb01f | 192 | ]; |
5f1c8c57 | 193 | unset($cases['total']); |
bf5990e7 | 194 | $casesDT['data'] = array_values($cases); |
5f1c8c57 | 195 | |
196 | CRM_Utils_JSON::output($casesDT); | |
197 | } | |
198 | ||
6a488035 | 199 | } |