8 require_once(
"$admLibrary/aAudit.i");
10 $string = array(
"filter" => HCUFILTER_INPUT_STRING);
11 HCU_ImportVars($parameters,
"a", array(
"operation" => $string,
"payload" => $string,
"ft" => $string,
"userId" => $string));
12 extract($parameters[
"a"]);
14 $operation = is_null($operation) ?
"" : trim($operation);
17 $userId = HCU_PayloadDecode($Cu, $payload);
18 }
catch(exception $e) { ?>
19 <div
class=
'noUserFound'><div>No
User Found</div></div>
22 PrintPage(
"$menu_link?ft=$ft", $userId[
"user_id"], GetAuditRecords($dbh, $Cu, $userId[
"user_id"], $SYSENV[
"logger"]));
36 function GetAuditRecords($dbh, $Cu, $userId, $logger) {
39 $sql =
"select auditdate as date, auditaction as actioncode, auditsrcuser_name as srcuser, auditrecbefore as before, auditrecafter as after, auditsrccode_context as script, 40 auditfulldesc as action, row_number() over (order by auditdate desc) as rown from ${Cu}audituser where user_id = " . intval($userId);
41 $sth = db_query($sql, $dbh);
43 throw new exception(
"Audit query failed.", 12);
45 $auditRecords = array();
47 for($i = 0; $row = db_fetch_assoc($sth, $i); $i++) {
49 $results = ParseUserAuditRow($row, $Cu, $dbh);
50 if ($results[
"status"] !==
"000") {
51 $logger->error(
"Banking audit is invalid in the database. CU: $Cu, Audit Date: " . $row[
"date"]);
55 unset($row[
"before"]);
57 $row[
"details"] = $results[
"details"];
60 $tz = GetCreditUnionTimezone($dbh, $Cu);
61 $dateTime =
new DateTime($row[
"date"]);
62 $dateTime->setTimezone(
new DateTimeZone($tz));
63 $row[
"date"] = $dateTime->format(
"Y-m-d H:i:s.u") .
"Z";
65 $auditRecords[] = $row;
67 $returnArray = array(
"status" =>
"000",
"error" => array(),
"auditRecords" => $auditRecords);
68 }
catch(exception $e) {
69 $returnArray = array(
"status" => $e->getCode(),
"error" => array($e->getMessage()));
82 function PrintPage($self, $userId, $readData) { ?>
83 <script type=
"text/javascript">
93 $.homecuValidator.setup({formValidate:
"auditPrintForm", formStatusField:
"formValidateDiv"});
94 $(
"#externalTabWindow").data(
"preferredHeight",
"auto");
95 var record = <?php echo HCU_JsonEncode($readData); ?>;
96 if (record.error.length > 0) {
97 $.homecuValidator.displayMessage(record.error, $.homecuValidator.settings.statusError );
99 var auditData = record.auditRecords;
100 $.homecuValidator.setup({formValidate:
'auditPrintForm', formStatusField:
'formValidateStatusDiv'});
102 var grid = $(
"#auditGrid").kendoGrid({
105 read:
function(options) {
106 options.success(auditData);
113 rown: {type:
"number"},
114 date: {type:
"date"},
115 action: {type:
"string"},
116 actioncode: {type:
"string"},
117 details: {type:
"odata"},
118 script: {type:
"string"},
119 checked: {type:
"boolean"},
120 srcuser: {type:
"string"}
126 {
template:
"<input type='checkbox' class='rowCheckbox'>", attributes: {
"class":
"checkboxTD"},
127 headerTemplate:
"<input type='checkbox' class='allCheckbox'>", width:
"45px", sortable:
false, filterable:
false},
128 {field:
"date", title:
"Date", format:
"{0:G}"},
129 {field:
"srcuser", title:
"Changed By"},
130 {field:
"action", title:
"Action Type"},
134 template:
"<tr class='noRecordsDiv'><td colspan='4'>No Records Found</td></tr>" 138 toolbar: [{name:
"print", text:
"Print"}],
139 detailTemplate: ReturnAuditDetailTemplate,
140 }).data(
"kendoGrid");
142 $(
"#auditGrid").on(
"click",
".auditDetailContainer .auditShowAllBtn",
function() {
143 if ($(
this).text().trim() ==
"Show All") {
144 $(
this).closest(
".auditDetailContainer").removeClass(
"hideAA");
145 $(
this).text(
"Show Changed");
147 $(
this).closest(
".auditDetailContainer").addClass(
"hideAA");
148 $(
this).text(
"Show All");
154 <?php printCheckboxEvents(
"#auditGrid",
".k-grid-print"); ?>
156 $(
".k-grid-print").addClass(
"k-state-disabled");
158 $(
".k-grid-print").click(
function() {
159 if (!$(
this).hasClass(
"k-state-disabled")) {
165 $(
".k-grid-show").click(
function() {
166 if ($(
this).text().trim() ==
"Show Filter") {
167 $(
".auditFilterDiv").show();
168 $(
this).text(
"Hide Filter");
170 $(
".auditFilterDiv").hide();
171 $(
this).text(
"Show Filter");
185 function AuditOpenPopup(auditData) {
186 var dialog = $(
"#auditDetailWindow").data(
"kendoDialog");
187 var
template = kendo.template($(
"#auditDetailTemplate").html());
189 if (dialog ==
null) {
190 dialog = $(
"#previewWindow").kendoDialog({
192 actions: [{text:
"Okay", primary:
true}],
197 if (window.activeWindows !=
null) {
198 window.activeWindows.push(
this);
202 if (window.activeWindows !=
null) {
203 window.activeWindows.pop();
206 }).data(
"kendoDialog");
209 dialog.content(
template(auditData)).open();
211 var maxHeight1 = 600;
212 var maxHeight2 = $(window).height() - 150;
213 var maxHeight = maxHeight2 >= maxHeight1 ? maxHeight1 : maxHeight2;
214 $(dialog.wrapper).css({top: 5});
215 $(
"#previewWindow .auditMaxHeight").css({maxHeight: maxHeight, overflowY:
"auto", overflowX:
"hidden"});
224 function PrintAudits() {
225 $(
"<div id='tempAudit' style='display:none;'><div class='container'><div class='row form-group mockKendoTable auditInsertion'></div></div></div>").appendTo(
"body");
227 var gridData = $(
"#auditGrid").data(
"kendoGrid").dataSource.view();
229 for(var i = 0; i != gridData.length; i++) {
230 var record = gridData[i];
231 if (record.checked) {
232 var rowTemplate =
"<div class='tr nobottom'><span class='col-xs-4'>" + record.action +
"</span><span class='col-xs-4'>" + record.srcuser +
"</span>" 233 +
"<span class='col-xs-4'>" + kendo.toString(record.date,
'd') +
"</span></div><div class='tr notop'><span class='col-xs-12'><div class='container-fluid'><div class=' col-xs-12'>" 234 + ReturnAuditDetailTemplate(record,
true) +
"</div></div></span></div>";
235 $(
".auditInsertion").append(rowTemplate);
238 var newWindow = window.open(
"",
"auditPrint");
239 $(
"#auditPrintForm [name='shell']").val($(
"#tempAudit").html());
240 $(
"#auditPrintForm [name='title']").val(
"User Audit of " + $(
".kWindowCard .k-window-title").text().split(
"/")[2].trim());
241 $(
"#auditPrintForm").submit();
242 $(
"#tempAudit").
remove();
255 function ReturnAuditDetailTemplate(row, isPrinting) {
256 var returnString =
'<div class="auditMaxHeight"><div class="container-fluid auditDetailContainer hideAA">';
258 for (var i = 0, iLength = row.details.length; i != iLength; i++) {
259 var tableRow = row.details[i];
261 var message = tableRow.label + (tableRow.type !=
"mixed" ?
"(" + tableRow.type +
" records)" :
"");
262 returnString +=
'<div class="row form-group"><div class="col-xs-12"><h4 class="h4 hcuSpacerx">' + message +
'</h4></div></div>';
265 if (tableRow.altDesc !=
null && tableRow.altDesc !=
"") {
266 returnString += tableRow.altDesc;
270 for (var j = 0, jLength = tableRow.rows.length; j != jLength; j++) {
271 var rowRow = tableRow.rows[j];
273 if (rowRow.altDesc !=
null && rowRow.altDesc !=
"") {
274 returnString +=
'<div class="row"><div class="col-xs-12">' + rowRow.altDesc +
'</div></div>';
278 var showBefore =
true;
279 var showAfter =
true;
280 switch (rowRow.type) {
281 case "add": showBefore =
false;
break;
282 case "remove": showAfter =
false;
break;
284 var theseClasses = showBefore && showAfter ?
"col-xs-4 col-md-4" :
"col-xs-8 col-md-8";
285 if (tableRow.type ==
"mixed") {
286 var message = rowRow.type +
" record:";
287 returnString +=
'<div class="row form-group"><div class="col-xs-12"><h4 class="h4 hcuSpacerx">' + message +
'</h4></div></div>';
289 returnString +=
'<div class="row form-group mockKendoTable">';
290 if (!isPrinting && i == 0 && j == 0) {
291 returnString +=
'<a href="#" class="auditShowAllBtn">Show All</a><br>';
293 returnString +=
'<div class="th">';
294 returnString +=
'<span class="col-xs-3 col-md-4">Column</span>';
297 returnString +=
'<span class="' + theseClasses +
'">Before</span>';
300 returnString +=
'<span class="' + theseClasses +
'">After</span>';
303 returnString +=
'<div class="clearfix hidden-xs-block"></div>';
304 returnString +=
'</div>'; <?php
306 for (var k = 0, kLength = rowRow.values.length; k != kLength; k++) {
307 var colRow = rowRow.values[k];
308 var same = !isPrinting && colRow.same ?
"aa" :
"";
310 returnString +=
'<div class="tr ' + same +
'">';
311 returnString +=
'<span class="col-xs-3 col-md-4">' + colRow.label +
'</span>';
314 returnString +=
'<span class="' + theseClasses +
'">';
315 if (colRow.before ==
"") {
316 returnString +=
" ";
318 returnString += colRow.before;
320 returnString +=
"</span>";
324 returnString +=
'<span class="' + theseClasses +
'">';
325 if (colRow.after ==
"") {
326 returnString +=
" ";
328 returnString += colRow.after;
330 returnString +=
"</span>";
333 returnString +=
'<div class="clearfix hidden-xs-block"></div>';
334 returnString +=
'</div>'; <?php
337 returnString +=
"</div>"; <?php
341 returnString +=
"</div></div>"; <?php
348 <div
id=
"formValidateDiv" class=
"k-block k-error-colored" style=
"display:none"></div>
349 <div
id=
"auditGrid" class=
"hcu-all-100 pointerGrid"></div>
350 <form
id=
"auditPrintForm" method=
"post" action=
"shell.prg" target=
"auditPrint">
351 <input type=
"hidden" name=
"shell" value=
"">
352 <input type=
"hidden" name=
"title" value=
"">
354 <div
id=
"previewWindow"></div>