8 $string = array(
"filter" => HCUFILTER_INPUT_STRING);
9 $parameters = array(
"a" => array(
"operation" =>
"",
"payload" =>
"",
"alerts" =>
""));
10 HCU_ImportVars($parameters,
"a", array(
"operation" => $string,
"payload" => $string,
"alerts" => $string));
11 extract($parameters[
"a"]);
13 $operation = !isset($operation) ?
"" : trim($operation);
14 $payload = isset($payload) ? trim($payload) :
"";
15 $alerts = isset($alerts) ? trim($alerts) :
"";
17 try { $userId = HCU_PayloadDecode($Cu, $payload); }
catch(exception $e) {}
18 $userId = isset($userId) ? intval($userId[
"user_id"]) : null;
20 if ($operation !=
"") {
24 $returnArray = saveAlert($dbh, $Cu, $userId, $Cn, $alerts);
27 $returnArray = array(
"error" => array(
"Operation not specified: '$operation'"),
"record" => array());
30 $returnArray = array(
"error" => array(
"No User Found"),
"record" => array());
33 header(
'Content-type: application/json');
34 print HCU_JsonEncode($returnArray);
37 printPage(
"$menu_link?ft=$ft", $userId, readAlerts($dbh, $Cu, $userId), $payload);
39 <div
class=
'noUserFound'><div>No
User Found</div></div>
54 function readAlerts($dbh, $Cu, $userId) {
56 $data = Get_AlertsDetailed($dbh, $Cu, $userId, GetFlagsetValue(
"CU3_PREPEND_MBR_DESC"));
57 $errors = array_merge($errors, $data[
"errors"]);
62 foreach($data[
"data"] as $record) {
63 $isCell = $record[
"emailtype"] ==
"W";
64 $newRecord = array(
"id" => $record[
"id"],
"alertDescription" => $record[
"type_name"],
"accntDescription" => $record[
"description"],
65 "alerted" => $record[
"lastalert"],
"isCell" => $isCell,
"destinationEmail" =>
"",
"destinationPhone" => 0,
"checked" => $record[
"alertstatus"] == 1,
66 "accountNumber" => trim($record[
"accountnumber"]));
69 $newRecord[
"destinationPhone"] = intval($record[
"notifyto"]);
71 $newRecord[
"destinationEmail"] = $record[
"notifyto"];
73 $records[] = $newRecord;
75 $returnArray = array(
"error" => $errors,
"record" => $records);
93 function saveAlert($dbh, $Cu, $userId, $Cn, $alerts) {
94 $parameters = array();
95 $data = Update_AlertStatuses($dbh, $Cu, $userId, $alerts, $Cn,
true);
97 $errors = $data[
"errors"];
98 return array(
"error" => $errors);
110 function printPage($self, $userId, $readData, $payload) { ?>
111 <script type=
"text/javascript">
123 function dirtify(dirty, container) {
125 $(container).addClass(
"k-dirty-cell");
126 $(container).prepend(
"<span class='k-dirty'></span>");
128 $(container).removeClass(
"k-dirty-cell");
129 $(container).find(
".k-dirty").remove();
140 $.homecuValidator.setup({formValidate:
"userAlertsDiv", formStatusField:
"formValidateAlertsDiv"});
141 $(
"#externalTabWindow").data(
"preferredHeight", 450);
143 var alertGrid = $(
"#alertGrid").kendoGrid({
146 read:
function(options) {
147 options.success(alertData);
154 id: {type:
"number"},
155 alertDescription: {type:
"string"},
156 accntDescription: {type:
"string"},
157 alerted: {type:
"date"},
158 isCell: {type:
"boolean"},
159 destinationEmail: {type:
"string"},
160 destinationPhone: {type:
"number"},
162 checked: {type:
"boolean"},
163 originalChecked: {type:
"boolean"},
164 accountNumber: {type:
"string"}
172 {headerTemplate:
"<center>Enabled</center>", width: 45, field:
"checked"},
173 {title:
"Sub-Account"},
174 {title:
"Description", field:
"alertDescription"},
175 {title:
"Last Alert", field:
"alerted"},
176 {title:
"Destination"}
178 rowTemplate:
"# var alertDate= kendo.toString(alerted, 'MM/dd/yyyy'); var alertTime= kendo.toString(alerted, 'HH:mm:ss'); #" 179 +
"<tr data-uid='#: uid #'>" 180 +
"<td><center> # if (checked) { # <div class='restriction allow hcu-all-100'><i class='fa fa-check'></i></div> # } else { #" 181 +
"<div class='restriction ban hcu-all-100'><i class='fa fa-ban'></i></div> # } # </center></td>" 182 +
"<td>#: accntDescription #</td><td>#: alertDescription #<span class='hidden-xs hidden-sm'> Alert</span></td>" 183 +
"<td># if (alerted == null) { # # } else { # #: alertDate #<span class='hidden-xs hidden-sm'> #: alertTime #</span># } #</td>" 184 +
"<td># if (isCell) { #<i class='fa fa-phone-square'></i> #: destinationPhone # # } else { #" 185 +
"<i class='fa fa-envelope'></i> #: destinationEmail # # } #</td></tr>",
187 template:
"<tr><td colspan='5'><span class='hcu-secondary'><span class='vsgSecondary'>No Records Found</span></span></td></tr>" 190 }).data(
"kendoGrid");
192 $(
".userAlertsDiv .cancelBtn").click(
function() {
193 userSupportDoOnClose();
197 $(
".userAlertsDiv .updateBtn").click(
function() {
198 var gridData = $(
"#alertGrid").data(
"kendoGrid").dataSource.data();
199 var changedAlerts = [];
200 for(var i = 0; i != gridData.length; i++) {
201 var value = gridData[i].checked;
202 var
id = gridData[i].id;
203 if (value == gridData[i].originalChecked) {
206 changedAlerts.push({id: id, alertstatus: value ?
"1" :
"0"});
210 $.post(
"<?php echo $self; ?>&operation=saveAlert", {alerts: kendo.stringify(changedAlerts), payload:
"<?php echo $payload; ?>"},
function(data) {
212 if (data.error.length > 0) {
213 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
215 for(var i = 0; i != gridData.length; i++) {
216 gridData[i].dirty =
false;
217 gridData[i].originalChecked = gridData[i].checked;
225 $(
"#alertGrid").on(
"click",
".restriction.allow",
function() {
226 var td = $(
this).closest(
"td");
227 $(td).html(
"<center><div class='restriction ban hcu-all-100'><i class='fa fa-ban'></i></div></center>");
228 var tr = $(td).closest(
"tr");
229 var dataItem = alertGrid.dataItem(tr);
230 dataItem.dirty =
true;
231 dataItem.checked =
false;
232 dirtify(dataItem.checked != dataItem.originalChecked, td);
236 $(
"#alertGrid").on(
"click",
".restriction.ban",
function() {
237 var td = $(
this).closest(
"td");
238 $(td).html(
"<center><div class='restriction allow hcu-all-100'><i class='fa fa-check'></i></div></center>");
239 var tr = $(td).closest(
"tr");
240 var dataItem = alertGrid.dataItem(tr);
241 dataItem.dirty =
true;
242 dataItem.checked =
true;
244 dirtify(dataItem.checked != dataItem.originalChecked, td);
248 $(
"#alertGrid").on(
"click",
"tbody tr",
function(e) {
249 $(
this).find(
".restriction").click();
252 var data= <?php echo HCU_JsonEncode($readData); ?>;
253 if (data.error.length > 0) {
254 $.homecuValidator.displayMessage(data.error, $.homecuValidator.settings.statusError );
256 for(var i = 0; i != data.record.length; i++) {
257 var record = data.record[i];
258 record.kendoIndex = i + 1;
259 record.originalChecked = record.checked;
261 alertData =
new kendo.data.ObservableArray(data.record);
262 alertGrid.dataSource.read();
263 $(
"#alertGrid").css({maxHeight: 300, overflowY:
"auto"});
273 function postPostPostPost() {
274 $(
"#externalTabWindow").data(
"isClosing",
true);
275 $(
"#externalTabWindow").data(
"kendoWindow").close();
276 $(
"#externalTabWindow").data(
"isClosing",
false);
285 function userSupportDoOnClose() {
286 potentiallyCancelChanges();
287 $(
"#externalTabWindow").data(
"shouldClose",
false);
296 function potentiallyCancelChanges() {
297 if ($.grep($(
"#alertGrid").data(
"kendoGrid").dataSource.data(),
function(n,i) {
return n.originalChecked != n.checked; }).length == 0) {
300 var discardChangesDialog= $(
"#discardChangesDialog").data(
"kendoDialog");
301 if (discardChangesDialog ==
null) {
302 discardChangesDialog = $(
"<div id='discardChangesDialog'></div>").appendTo(
"body").kendoDialog({
303 title:
"Discard Changes",
304 content:
"<p>Changes have been made to this user's alerts.</p><p>Do you wish to discard your changes?</p>",
307 {text:
"Yes", primary:
true, action:
function() {
313 if (window.activeWindows !=
null)
314 window.activeWindows.push(
this);
317 if (window.activeWindows !=
null)
318 window.activeWindows.pop();
320 }).data(
"kendoDialog");
322 discardChangesDialog.open();
329 <div
class=
"container userAlertsDiv vsgPrimary hcu-template hcu-all-100" id=
"userAlertsDiv">
331 <div
id=
"formValidateAlertsDiv" class=
"k-block k-error-colored formValidateDiv" style=
"display:none;"></div>
333 <div
class=
"hcu-secondary">
334 <div
class=
"row small vsgSecondary hcu-note">
335 Click on a row to change enabled status.
339 <div
id=
"alertGrid" class=
"hcu-all-100"></div>
341 <div
class=
"hcu-edit-buttons k-state-default row">
342 <a
class=
"cancelBtn" href=
"#">Cancel</a>
344 <a
class=
"updateBtn k-button k-primary" href=
"#"><i
class=
"fa fa-check"></i>Update</a>