19 require_once(
"$admLibrary/aMemberSupport.i");
20 require_once(dirname(__FILE__) .
"/../../shared/library/hcuTranslate.i");
21 require_once(dirname(__FILE__) .
"/../../shared/library/sAPIAppl.i");
26 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
27 "payload" => array(
"filter" => FILTER_SANITIZE_STRING),
28 "mPdf" => array(
"filter" => FILTER_SANITIZE_STRING)
30 HCU_ImportVars($admVars,
"MEMBER_ESTMT", $admOk);
32 $eOperation = isset($admVars[
"MEMBER_ESTMT"][
"operation"]) ? $admVars[
"MEMBER_ESTMT"][
"operation"] :
null;
33 $ePayload = isset($admVars[
"MEMBER_ESTMT"][
"payload"]) ? $admVars[
"MEMBER_ESTMT"][
"payload"] :
null;
34 $ePdf = isset($admVars[
"MEMBER_ESTMT"][
"mPdf"]) ? $admVars[
"MEMBER_ESTMT"][
"mPdf"] :
null;
36 $eMember = $ePayload ?
37 MemberDecrypt($SYSENV, $Cu, $ePayload) :
40 $eContext = $ePayload ?
41 MemberContext($SYSENV, $Cu, $eMember[
'member']) :
42 MemberContext($SYSENV, $Cu);
47 switch ($eOperation) {
49 PrintMemberEStatements();
51 case "memberReadEStatements":
52 header(
'Content-type: application/json');
54 ValidatePermissions($ePayload, $eMember[
"member"], $Cn, $Cu);
55 $eMemberStmt = MemberReadEStatements($SYSENV, $dbh, $eContext);
56 $aryResult[
'data'][
'news'] = $eMemberStmt[
'estmt'][
'news'];
57 $aryResult[
'data'][
'stmts'] = $eMemberStmt[
'estmt'][
'stmts'];
58 MemberReply($aryResult, $aryReply, $eOperation);
61 header(
'Content-type: application/pdf');
62 ValidatePermissions($ePayload, $eMember[
"member"], $Cn, $Cu);
63 $eValidate = MemberValidatePdf($SYSENV, $eContext, $ePdf);
64 $eMemberStmt = MemberReadPdf($SYSENV, $dbh, $eContext, $eValidate);
65 MemberReply($aryResult, $aryReply, $eOperation);
68 throw new Exception(
"Unknown server request: " . $eOperation);
72 }
catch (Exception $e) {
73 $aryReply[
'errors'][] = $e->getMessage();
74 $aryResult[
'data'] = array();
75 $aryResult[
'info'] = array();
77 MemberReply($aryResult, $aryReply, $eOperation);
92 function ValidatePermissions($ePayload, $eMember, $Cn, $Cu) {
93 if (isset($ePayload)) {
99 $isMasterUser = $Cn == strtolower(trim($Cu));
100 $hasPermissions =
true;
101 $hasPermissions = $hasPermissions && HCU_array_key_value(
"m_stmnt", $eMember) ===
"Y";
102 if (!$isMasterUser) {
103 $hasPermissions = $hasPermissions && HCU_array_key_value(
"m_employee", $eMember) !==
"Y";
105 if (!$hasPermissions) {
106 throw new exception (
"You do not have permissions to view eStatements.");
111 function MemberValidatePdf($pEnv, $pContext, $pPdf) {
112 $sList = html_entity_decode($pPdf, ENT_QUOTES);
113 $dList = HCU_JsonDecode($sList);
118 function MemberReadPdf($pEnv, $pDbh, $pContext, $pPdf) {
119 $cuTable = $pContext[
'cu_table'];
120 $cuCode = $pContext[
'cu_code'];
121 $cuMember = $pContext[
'm_account'];
123 $HB_ENV[
'Flang'] =
"en_US";
124 $HB_ENV[
'Fset3'] = $GLOBALS[
'Fset3'];
125 $HB_ENV[
'Cu'] = $GLOBALS[
'Cu'];
126 $HB_ENV[
'Cn'] = $GLOBALS[
'Cn'];
127 $HB_ENV[
'chome'] = $GLOBALS[
'chome'];
128 $HB_ENV[
'CU3_ESTMNT_CORE'] = $GLOBALS[
'CU3_ESTMNT_CORE'];
129 $HB_ENV[
'dbh'] = $pDbh;
130 $HB_ENV[
'SYSENV'] = $pEnv;
134 $eStmt = Create_PDF_Statement($pPdf[
'pdfKey'], $HB_ENV, $MC, $cuMember);
135 if ($eStmt[
"status"][
"code"] ==
"999" && count( $eStmt[
"errors"] ) > 0) {
136 throw new Exception($eStmt[
"errors"][0]);
140 function MemberReadEStatements($pEnv, $pDbh, $pContext) {
141 $cuTable = $pContext[
'cu_table'];
142 $cuCode = $pContext[
'cu_code'];
143 $cuMember = $pContext[
'm_account'];
145 $sqlReturn = array();
148 FROM {$cuTable}user u 149 INNER JOIN {$cuTable}memberacct m ON m.primary_user = u.user_id 150 WHERE m.accountnumber = '$cuMember'";
151 $sqlSelectRs = db_query($sqlSelect, $pDbh);
153 $pEnv[
'logger']->error(db_last_error());
154 throw new Exception(
"Failed to read member email.");
156 $sqlData = db_fetch_all($sqlSelectRs)[0];
161 $http_scheme = $pEnv[
'require_encryption'] ?
'https' :
'http';
164 $HB_ENV[
'fi_path'] =
"$http_scheme://{$GLOBALS['_SERVER']['HTTP_HOST']}/fi/{$cuTable}/";
165 $HB_ENV[
'Flang'] =
"en_US";
166 $HB_ENV[
'Fset3'] = $GLOBALS[
'Fset3'];
167 $HB_ENV[
'Cu'] = $GLOBALS[
'Cu'];
168 $HB_ENV[
'Cn'] = $GLOBALS[
'Cn'];
169 $HB_ENV[
'chome'] = $GLOBALS[
'chome'];
170 $HB_ENV[
'live'] = $GLOBALS[
'live'];
171 $HB_ENV[
'Ml'] = $sqlData[
'email'];
172 $HB_ENV[
'CU3_ESTMNT_CORE'] = $GLOBALS[
'CU3_ESTMNT_CORE'];
173 $HB_ENV[
'dbh'] = $pDbh;
174 $HB_ENV[
'SYSENV'] = $pEnv;
180 $eStmt = Get_Estmt($pDbh, $HB_ENV, $MC, $cuMember);
181 if ($eStmt[
"status"][
"code"] ==
"999" && count( $eStmt[
"status"][
"errors"] ) > 0) {
182 throw new Exception($eStmt[
"status"][
"errors"][0]);
185 $sqlReturn[
'estmt'][
'news'] =
186 isset($eStmt[
"estmt"][
"pdflinks"]) ? $eStmt[
"estmt"][
"pdflinks"] : array();
187 $sqlReturn[
'estmt'][
'stmts'] =
188 isset($eStmt[
"estmt"][
"toclinks"]) ? $eStmt[
"estmt"][
"toclinks"] : array();
198 function PrintMemberEStatements() { ?>
199 <style type=
"text/css">
208 .hcu-pdf-link .hcu-pdf-icon,
209 .hcu-pdf-link .hcu-pdf-info {
213 .hcu-pdf-link .hcu-pdf-info {
214 vertical-align: middle;
221 <div
id=
"status"></div>
223 <div
class=
"well well-sm col-sm-12">
227 <div
class=
"row" id=
"meNewsView"></div>
229 <div
class=
"well well-sm col-sm-12">
233 <div
class=
"row" id=
"meStmtView"></div>
235 <div
class=
"hcu-template">
236 <div
class=
"hcu-edit-buttons k-state-default">
237 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
238 <i
class=
"fa fa-times fa-lg"></i>
245 <script type=
"text/x-kendo-template" id=
"meTemplate">
246 <a
class=
"hcu-pdf-link col-sm-4 col-lg-3" 247 data-index=
"#= pdfIndex #" 248 data-source=
"#= pdfType #">
249 <div
class=
"well well-sm">
250 <div
class=
"hcu-pdf-icon">
251 <span
class=
"fa fa-3x fa-file-pdf-o"></span>
253 <div
class=
"hcu-pdf-info">
254 <span><strong>#= pdfTitle #</strong></span>
255 #if(pdfType == "stmt") {# 257 <span>#= pdfStmt #</span>
292 <script type=
"text/javascript">
294 var meCardContainer =
null;
295 var meCardWindows =
null;
297 var mePayload =
null;
302 var meDataSource =
null;
304 var meStmtsOpened =
false;
306 var meStmtView =
null;
307 var meStmtData =
null;
308 var meNewsView =
null;
309 var meNewsData =
null;
310 var meTemplate =
null;
314 var DataBuildNews =
function(data) {
316 for (var i = 0; i < data.length; i++) {
319 pdfTitle: data[i].pdftitle.trim(),
320 pdfPath: data[i].pdfpath.trim(),
324 meNewsData.push(letter);
325 meNewsView.append(meTemplate(letter));
329 var DataBuildStmt =
function(data) {
331 for (var i = 0; i < data.length; i++) {
334 pdfTitle: data[i].PerDesc.trim(),
335 pdfStmt: data[i].PerType.trim(),
336 pdfEnd: data[i].PerEnd.trim(),
337 pdfTokn: data[i].PerTokn.trim(),
338 pdfKey: data[i].PerKey.trim(),
342 meStmtData.push(stmt);
343 meStmtView.append(meTemplate(stmt));
347 var DataBuildLinks =
function() {
348 $(
".hcu-pdf-link").each(
function(i) {
349 $(
this).on(
"click", EventReadPdf);
353 var EventReadPdf =
function(e) {
354 var pdfIndex = $(
this).data(
"index");
355 var pdfType = $(
this).data(
"source");
361 pdfData = meNewsData[pdfIndex];
362 pdfPath = pdfData.pdfPath;
365 pdfData = meStmtData[pdfIndex];
366 pdfPath +=
"main.prg?ft=103108";
367 pdfPath +=
"&operation=memberReadPdf";
368 pdfPath +=
"&payload=" + encodeURIComponent(mePayload);
369 pdfPath +=
"&mPdf=" + encodeURIComponent(JSON.stringify(pdfData));
373 window.open(pdfPath);
376 var EventOpenWindow =
function(e) {
377 var windowElement = this.element[0];
378 var windowId = windowElement.id;
382 meStmtsOpened =
true;
386 meCardWindows.push(
this);
389 var EventCloseWindow =
function(e) {
390 var windowElement = this.element[0];
391 var windowId = windowElement.id;
395 meStmtsOpened =
false;
402 var EventPopWindow =
function(windowId) {
404 for (var i = 0; i < meCardWindows.length; i++) {
405 var openWindow = meCardWindows[i].element[0];
406 var openId = openWindow.id;
408 if (openId == windowId) {
415 meCardWindows.splice(popIndex, 1);
419 var InitDataSources =
function() {
420 meDataSource =
new kendo.data.DataSource({
425 contentType:
"application/x-www-form-urlencoded",
433 requestStart:
function(request) {
436 requestEnd:
function(response) {
437 setTimeout(hideWaitWindow, 500);
439 if (response.hasOwnProperty(
"response")) {
440 if (response.response.hasOwnProperty(
"Results")) {
441 var results = response.response.Results;
443 if (results.hasOwnProperty(
"errors")) {
444 if (meStmtsOpened ==
false) {
445 $.homecuValidator.setup({ formStatusField:
"formStatus", formValidate:
"cardContainerDiv" });
447 $.homecuValidator.homecuResetMessage =
true;
448 $.homecuValidator.displayMessage(results.errors, $.homecuValidator.settings.statusError);
449 }
else if (results.hasOwnProperty(
"info")) {
450 $.homecuValidator.homecuResetMessage =
true;
451 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
454 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
457 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
461 parse:
function(response) {
464 var resultData =
null;
465 var resultOperation =
null;
467 if (response.hasOwnProperty(
"Results")) {
468 results = response.Results;
469 resultData = results.data;
470 resultOperation = results.operation;
473 if (results.hasOwnProperty(
"errors")) {
478 if (resultData == undefined || resultData ==
null) {
483 setTimeout(
function() {
486 switch (resultOperation) {
487 case "memberReadEStatements":
488 DataBuildStmt(resultData.stmts);
489 DataBuildNews(resultData.news);
492 meMember.cardTitle=
"Member eStatements";
493 var
template= kendo.template($(
"#titleTemplate").html());
494 meStmts.title(
template(meMember)).center().open();
504 var InitDataViews =
function() {
505 meStmts = $(
"#meStmts").kendoWindow({
506 title:
"Member eStatements",
512 activate: EventOpenWindow,
513 close: EventCloseWindow,
515 this.wrapper.css({ top: 100 });
517 }).data(
"kendoWindow");
519 meNewsView = $(
"#meNewsView");
520 meStmtView = $(
"#meStmtView");
521 meTemplate = kendo.template($(
"#meTemplate").html());
523 meStatus = $(
"#meStatus");
526 meClose = $(
"#btnUpdate");
529 var InitDataActions =
function() {
530 meClose.on(
"click",
function(e) {
535 this.Open =
function(windowStack) {
537 $.homecuValidator.setup({
538 formStatusField:
"status",
539 formValidate:
"meStmts" 542 meCardWindows = windowStack;
543 var memberRequest = {
544 operation:
"memberReadEStatements",
548 meDataSource.transport.options.read.type =
"POST";
549 meDataSource.read(memberRequest);
552 this.Close =
function() {
556 $.homecuValidator.setup({
557 formStatusField:
"formStatus",
558 formValidate:
"cardContainerDiv" 562 this.Data =
function(payload, member) {
567 this.Init =
function(hubCall, cardContainer) {
569 meCardContainer = cardContainer;
575 meCall(
"MemberEStatements",
this);