19 require_once(
"$admLibrary/aMemberSupport.i");
24 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
25 "payload" => array(
"filter" => FILTER_SANITIZE_STRING),
26 "mParameters" => array(
"filter" => FILTER_SANITIZE_STRING)
28 HCU_ImportVars($admVars,
"MEMBER_SETTINGS", $admOk);
30 $aOperation = isset($admVars[
"MEMBER_SETTINGS"][
"operation"]) ? $admVars[
"MEMBER_SETTINGS"][
"operation"] :
null;
31 $aPayload = isset($admVars[
"MEMBER_SETTINGS"][
"payload"]) ? $admVars[
"MEMBER_SETTINGS"][
"payload"] :
null;
32 $aParameters = isset($admVars[
"MEMBER_SETTINGS"][
"mParameters"]) ? $admVars[
"MEMBER_SETTINGS"][
"mParameters"] :
null;
34 $aMember = $aPayload ?
35 MemberDecrypt($SYSENV, $Cu, $aPayload) :
38 $aContext = $aPayload ?
39 MemberContext($SYSENV, $Cu, $aMember[
'member']) :
40 MemberContext($SYSENV, $Cu);
45 switch ($aOperation) {
49 case "memberReadSettings":
51 header(
'Content-type: application/json');
56 $aryResult[
'data'][
'settings'] = $aSettings[
'settings'];
57 $aryResult[
'data'][
'accounts'] = $aAccounts[
'accounts'];
58 MemberReply($aryResult, $aryReply, $aOperation);
60 case "memberUpdateSettings":
61 header(
'Content-type: application/json');
67 $aMember = MemberSelect($SYSENV, $dbh, $aContext);
69 $aMemberEncrypt = MemberEncrypt($SYSENV, $Cu, $aMember);
71 $aryResult[
'data'][
'member'] = $aMember;
72 $aryResult[
'data'][
'encrypt'] = $aMemberEncrypt;
73 $aryResult[
'info'] = $aSettings[
'message'];
74 MemberReply($aryResult, $aryReply, $aOperation);
77 throw new Exception(
"Unknown server request: " . $aOperation);
81 }
catch (Exception $e) {
82 $aryReply[
'errors'][] = $e->getMessage();
83 $aryResult[
'data'] = array();
84 $aryResult[
'info'] = array();
86 MemberReply($aryResult, $aryReply, $aOperation);
102 $mValidate = array();
104 $mSettings = html_entity_decode($pSettings, ENT_QUOTES);
105 $mSettings = HCU_JsonDecode($mSettings);
108 if (array_key_exists(
"m_stmnt", $mSettings)) {
109 $mStmnt = $mSettings[
'm_stmnt'];
110 $mStmnt = $mStmnt ?
"Y" :
"N";
112 $mValidate[
'm_stmnt'] = $mStmnt;
115 if (array_key_exists(
"m_rdc", $mSettings)) {
116 $mRdc = $mSettings[
'm_rdc'] ?
117 intval($mSettings[
'm_rdc']) :
120 $mValidate[
'm_rdc'] = $mRdc;
123 if (array_key_exists(
"m_payid", $mSettings)) {
124 $mPayId = prep_save($mSettings[
'm_payid'], 12);
125 $mPayId = preg_replace(
'/[^0-9a-zA-Z]/',
"", $mPayId);
126 $mPayId = trim($mPayId);
128 $mValidate[
'm_payid'] = strlen($mPayId) > 0 ?
132 if (array_key_exists(
"m_restr", $mSettings)) {
133 $mRestr = strtoupper($mSettings[
'm_restr']);
134 $mRestr = prep_save($mRestr, 1);
135 $mRestr = trim($mRestr, 1);
137 $mValidate[
'm_restr'] = strlen($mRestr) > 0 ?
155 $cuTable = $pContext[
'cu_table'];
156 $cuCode = $pContext[
'cu_code'];
157 $cuMember = $pContext[
'm_account'];
159 $sqlReturn = array();
163 ab.description AS a_desc, 164 ab.accounttype AS a_type, 165 ab.may_deposit AS m_deposit, 166 ab.may_withdraw AS m_withdraw, 167 ma.balance_stamp AS b_stamp, 168 ma.balance_attempt AS b_attempt, 169 ab.history_stamp AS h_stamp, 170 ab.history_attempt AS h_attempt";
173 FROM {$cuTable}accountbalance ab 174 LEFT JOIN {$cuTable}memberacct ma 175 ON ma.accountnumber = ab.accountnumber 176 WHERE ab.accountnumber = '$cuMember' 177 ORDER BY ab.accounttype ASC";
178 $sqlSelectRs = db_query($sqlSelect, $pDbh);
180 $pEnv[
'logger']->error(db_last_error());
181 throw new Exception(
"Failed to read member deposit accounts.");
185 $sqlData = db_fetch_all($sqlSelectRs);
186 if (is_array($sqlData)) {
187 foreach ($sqlData as $key => $value) {
189 $cuTimeZone = GetCreditUnionTimezone($pDbh, $cuCode);
191 $value[
'b_stamp'] = ($value[
'b_stamp'] && abs($value[
'b_stamp']) > 1) ?
192 GetDateFormatTimezone(abs($value[
'b_stamp']),
"m/d/Y h:i A", $cuTimeZone) :
194 $value[
'b_attempt'] = ($value[
'b_attempt'] && abs($value[
'b_attempt']) > 1) ?
195 GetDateFormatTimezone(abs($value[
'b_attempt']),
"m/d/Y h:i A", $cuTimeZone) :
197 $value[
'h_stamp'] = ($value[
'h_stamp'] && abs($value[
'h_stamp']) > 1) ?
198 GetDateFormatTimezone(abs($value[
'h_stamp']),
"m/d/Y h:i A", $cuTimeZone) :
200 $value[
'h_attempt'] = ($value[
'h_attempt'] && abs($value[
'h_attempt']) > 1) ?
201 GetDateFormatTimezone(abs($value[
'h_attempt']),
"m/d/Y h:i A", $cuTimeZone) :
204 $sqlReturn[
'accounts'][
'deposit'][] = $value;
207 $sqlReturn[
'accounts'][
'deposit'] = array();
213 lb.description AS a_desc, 214 lb.loannumber AS a_type, 215 lb.may_addon AS m_addon, 216 lb.may_payment AS m_payment, 217 ma.balance_stamp AS b_stamp, 218 ma.balance_attempt AS b_attempt, 219 lb.history_stamp AS h_stamp, 220 lb.history_attempt AS h_attempt";
223 FROM {$cuTable}loanbalance lb 224 LEFT JOIN {$cuTable}memberacct ma 225 ON ma.accountnumber = lb.accountnumber 226 WHERE lb.accountnumber = '$cuMember' 227 ORDER BY lb.loannumber ASC";
228 $sqlSelectRs = db_query($sqlSelect, $pDbh);
230 $pEnv[
'logger']->error(db_last_error());
231 throw new Exception(
"Failed to read member loan accounts.");
235 $dataType = ($GLOBALS[
'Fset2'] & $GLOBALS[
'CU2_SPEC18']) == $GLOBALS[
'CU2_SPEC18'];
236 $sqlData = db_fetch_all($sqlSelectRs);
237 if (is_array($sqlData)) {
238 foreach ($sqlData as $key => $value) {
239 $cuTimeZone = GetCreditUnionTimezone($pDbh, $cuCode);
241 $value[
'b_stamp'] = ($value[
'b_stamp'] && abs($value[
'b_stamp']) > 1) ?
242 GetDateFormatTimezone(abs($value[
'b_stamp']),
"m/d/Y h:i A", $cuTimeZone) :
244 $value[
'b_attempt'] = ($value[
'b_attempt'] && abs($value[
'b_attempt']) > 1) ?
245 GetDateFormatTimezone(abs($value[
'b_attempt']),
"m/d/Y h:i A", $cuTimeZone) :
247 $value[
'h_stamp'] = ($value[
'h_stamp'] && abs($value[
'h_stamp']) > 1) ?
248 GetDateFormatTimezone(abs($value[
'h_stamp']),
"m/d/Y h:i A", $cuTimeZone) :
250 $value[
'h_attempt'] = ($value[
'h_attempt'] && abs($value[
'h_attempt']) > 1) ?
251 GetDateFormatTimezone(abs($value[
'h_attempt']),
"m/d/Y h:i A", $cuTimeZone) :
255 if ($value[
'a_type'] == 18 && $dataType) {
257 $sqlReturn[
'accounts'][
'credit'][] = $value;
259 $sqlReturn[
'accounts'][
'loan'][] = $value;
263 $sqlReturn[
'accounts'][
'credit'] = array();
264 $sqlReturn[
'accounts'][
'loan'] = array();
282 $cuTable = $pContext[
'cu_table'];
283 $cuCode = $pContext[
'cu_code'];
284 $cuMember = $pContext[
'm_account'];
286 $sqlReturn = array();
288 TRIM(estmnt_flag) AS m_stmnt, 289 TRIM(billpayid) AS m_payid, 290 rdcsetting AS m_rdc";
293 FROM {$cuTable}memberacct ma 294 WHERE accountnumber = '$cuMember'";
295 $sqlSelectRs = db_query($sqlSelect, $pDbh);
297 $pEnv[
'logger']->error(db_last_error());
298 throw new Exception(
"Failed to read member settings.");
301 $sqlReturn[
'settings'] = db_fetch_all($sqlSelectRs)[0];
318 $cuTable = $pContext[
'cu_table'];
319 $cuCode = $pContext[
'cu_code'];
320 $cuMember = $pContext[
'm_account'];
322 $sqlReturn = array();
326 $updateArray = array(
"_action" =>
"update",
"accountnumber" => $cuMember);
329 if (HCU_array_key_exists(
"m_stmnt", $pParameters)) {
330 $column = $pParameters[
'm_stmnt'] ? trim($pParameters[
'm_stmnt']) :
"";
331 $updateArray [
"estmnt_flag"] = $column ==
"" ? null : $column;
332 $sqlReturn[
'message'][] =
"eStatement Flag successfully updated.";
335 if (HCU_array_key_exists(
"m_rdc", $pParameters)) {
336 $column = $pParameters[
'm_rdc'] ? trim($pParameters[
'm_rdc']) :
"";
337 $updateArray [
"rdcsetting"] = $column ==
"" ? null : $column;
338 $sqlReturn[
'message'][] =
"RDC Setting successfully updated.";
341 if (HCU_array_key_exists(
"m_restr", $pParameters)) {
342 $column = $pParameters[
'm_restr'] ? trim($pParameters[
'm_restr']) :
"";
343 $updateArray [
"restrictions"] = $column ==
"" ? null : $column;
344 $sqlReturn[
'message'][] =
"Restrictions successfully updated.";
348 if (HCU_array_key_exists(
"m_payid", $pParameters)) {
353 SELECT COUNT(billpayid) 354 FROM {$cuTable}memberacct 355 WHERE billpayid = '{$pParameters['m_payid']}' 356 AND billpayid <> '' AND billpayid is not null";
357 $sqlSelectRs = db_query($sqlSelect, $pDbh);
358 $sqlData = db_fetch_all($sqlSelectRs);
359 if ($sqlData[0][
'count'] > 0) {
361 throw new Exception(
"Failed to update Bill Pay ID, the selected id already exists.");
364 $column = $pParameters[
'm_payid'] ? trim($pParameters[
'm_payid']) :
"";
365 $updateArray [
"billpayid"] = $column ==
"" ? null : $column;
366 $sqlReturn[
'message'][] =
"Bill Pay ID successfully updated.";
369 $updateArray = array(
"memberacct" => array($updateArray));
372 $script =
"userSupport.prg";
374 $sql =
"select email from cuadminusers where user_name = '$Cn' and cu = '$cuCode'";
376 $sth = db_query($sql, $pDbh);
378 throw new exception(
"email query failed.", 7);
379 $email = db_fetch_row($sth)[0];
381 if (!db_work ($pDbh, HOMECU_WORK_BEGIN))
382 throw new exception(
"begin query failed.", 32);
384 $pEnv [
"cu"] = $cuCode;
386 if (DataUserTableUpdate($pDbh, $pEnv,
null, $updateArray, 0,
"A_UPD", $context, $script,
"A",
"Member Settings", $Cn, $email, trim($_SERVER[
"REMOTE_ADDR"]),
false, $cuMember) ===
false) {
387 throw new exception (
"Unable to update member settings.");
390 if (!db_work ($pDbh, HOMECU_WORK_COMMIT))
391 throw new exception(
"commit query failed.", 32);
393 $sql =
"select accountnumber AS m_account, estmnt_flag AS m_stmnt, billpayid AS m_payid, rdcsetting AS m_rdc, restrictions AS m_restr 394 from ${cuTable}memberacct where accountnumber = '" . prep_save($cuMember, 12) .
"'";
396 $sth = db_query($sql, $pDbh);
398 throw new exception (
"Select query failed.");
401 $sqlReturn[
'settings'] = db_fetch_assoc($sth, 0);
412 <style type=
"text/css">
418 <div
id=
"status"></div>
420 <div
class=
"container-fluid">
421 <div
id=
"tabs"></div>
424 <!--TAB VIEW: SECURITY-->
425 <div
class=
"well well-sm col-sm-12" id=
"tabSecurity">
427 <div
class=
"col-xs-5 col-sm-4 col-md-3">
428 <label
for=
"inpRestriction">
429 <span>Restrictions</span>
430 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 431 data-bind=
"visible: dirty"></span>
435 <div
class=
"col-xs-7 col-sm-4 col-md-3">
436 <input
class=
"hcu-all-100" id=
"inpRestriction" 437 data-role=
"dropdownlist" 438 data-value-field=
"value" 439 data-text-field=
"text" 442 value: source.e_restr, 443 events: { change: change }">
448 <!--TAB VIEW: ACCOUNTS-->
449 <div
class=
"well well-sm col-sm-12" id=
"tabAccounts">
450 <div data-bind=
"visible: showNoRecords">
451 <div
class=
"hcu-secondary">
452 <div
class=
"vsgSecondary">No Records Found</div>
455 <div data-bind=
"visible: showDeposit">
456 <h3>Deposit Accounts</h3><br>
457 <div
id=
"depositGrid" 459 data-bind=
"source: deposit" 461 { title: 'Accounts', columns: [ 462 { field: 'a_type', title: 'Type', width: '150px' }, 463 { field: 'a_desc', title: 'Name', width: '150px', 464 attributes: { 'class': 'showEllipsis' } 467 { title: 'May', columns: [ 468 { field: 'm_withdraw', title: 'Withdraw', width: '90px', 469 template: '<span class=\'vsgSecondary\'># if (m_withdraw == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 471 { field: 'm_deposit', title: 'Deposit', width: '90px', 472 template: '<span class=\'vsgSecondary\'># if (m_deposit == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 475 <?php if ($GLOBALS['live'] == 'Y'): ?> 476 { title: 'Balance', columns: [ 477 { field: 'b_stamp', title: 'Retrieved', width: '150px', }, 478 { field: 'b_attempt', title: 'Attempted', width: '150px', } 480 { title: 'History', columns: [ 481 { field: 'h_stamp', title: 'Retrieved', width: '150px', }, 482 { field: 'h_attempt', title: 'Attempted', width: '150px', } 488 <div data-bind=
"visible: showLoan">
489 <h3>Loan Accounts</h3><br>
492 data-bind=
"source: loan" 494 { title: 'Accounts', columns: [ 495 { field: 'a_type', title: 'Type', width: '150px', }, 496 { field: 'a_desc', title: 'Name', width: '150px', 497 attributes: { 'class': 'showEllipsis' } 500 { title: 'May', columns: [ 501 { field: 'm_addon', title: 'Add-on', width: '90px', 502 template: '<span class=\'vsgSecondary\'># if (m_addon == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 504 { field: 'm_payment', title: 'Pay', width: '90px', 505 template: '<span class=\'vsgSecondary\'># if (m_payment == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 508 <?php if ($GLOBALS['live'] == 'Y'): ?> 509 { title: 'Balance', columns: [ 510 { field: 'b_stamp', title: 'Retrieved', width: '150px', }, 511 { field: 'b_attempt', title: 'Attempted', width: '150px', } 513 { title: 'History', columns: [ 514 { field: 'h_stamp', title: 'Retrieved', width: '150px', }, 515 { field: 'h_attempt', title: 'Attempted', width: '150px', } 521 <div data-bind=
"visible: showCredit">
522 <h3>Credit Accounts</h3><br>
525 data-bind=
"source: credit" 527 { title: 'Accounts', columns: [ 528 { field: 'a_type', title: 'Type', width: '150px' }, 529 { field: 'a_desc', title: 'Name', width: '150px', 530 attributes: { 'class': 'showEllipsis' } 533 { title: 'May', columns: [ 534 { field: 'm_addon', title: 'Add-on', width: '90px', 535 template: '<span class=\'vsgSecondary\'># if (m_addon == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 537 { field: 'm_payment', title: 'Pay', width: '90px', 538 template: '<span class=\'vsgSecondary\'># if (m_payment == \'t\') { # <div class=\'restriction allow readonly hcu-all-100\'><i class=\'fa fa-check\'></i></div> # } else { #<div class=\'restriction ban readonly hcu-all-100\'><i class=\'fa fa-ban\'></i></div> # } #</span>' 541 <?php if ($GLOBALS['live'] == 'Y'): ?> 542 { title: 'Balance', columns: [ 543 { field: 'b_stamp', title: 'Retrieved', width: '150px', }, 544 { field: 'b_attempt', title: 'Attempted', width: '150px', } 546 { title: 'History', columns: [ 547 { field: 'h_stamp', title: 'Retrieved', width: '150px', }, 548 { field: 'h_attempt', title: 'Attempted', width: '150px', } 555 <!--TAB VIEW: SETTINGS-->
556 <div
class=
"well well-sm col-sm-12" id=
"tabSettings">
558 <div
class=
"col-xs-5 col-sm-4 col-md-3">
559 <label
for=
"inpEstmnt">
560 <span>eStatements</span>
561 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 562 data-bind=
"visible: source.e_dirty"></span>
566 <div
class=
"col-xs-7 col-sm-4 col-md-3">
567 <input
id=
"inpEstmnt" type=
"checkbox" data-bind=
"checked: source.e_stmnt, events: { change: change }">
572 <div
class=
"col-xs-5 col-sm-4 col-md-3">
574 <span>RDC Setting</span>
575 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 576 data-bind=
"visible: source.e_dirty"></span>
580 <div
class=
"col-xs-5 col-sm-4 col-md-3">
582 data-role=
"numerictextbox" 585 data-spinners=
"false" 586 data-max=
"2147483647" 590 events: { change: change }">
595 <div
class=
"col-xs-5 col-sm-4 col-md-3">
596 <label
for=
"inpBpay">
597 <span>Bill Pay ID</span>
598 <span
class=
"fa fa-asterisk" style=
"color: #f0ad4e;" 599 data-bind=
"visible: source.e_dirty"></span>
603 <div
class=
"col-xs-7 col-sm-4 col-md-3">
605 data-role=
"maskedtextbox" 606 data-mask=
"AAAAAAAAAAAA" 610 value: source.e_payid, 611 events: { change: change }">
616 <div
class=
"bottomButtons">
617 <div
class=
"hcu-edit-buttons k-state-default">
618 <span
class=
"hcu-icon-delete">
620 <a href=
"##" id=
"lnkCancel">Cancel</a>
622 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
623 <i
class=
"fa fa-check fa-lg"></i>
630 <div
id=
"settingsCancel">
631 <p>This member
's information has been changed.</p> 632 <p>Do you wish to discard the changes?</p> 637 // JQUERY PLUGIN FOR TABS: update from groupinfo 667 <script type="text/javascript">
668 //# sourceURL=memberSettings.js
669 var MemberSettings = function() {
670 var maLive = <?php echo json_encode($GLOBALS['live
']); ?>; 671 var maCardContainer = null; 672 var maCardWindows = null; 674 var maPayload = null; 679 var maSettings = null; 683 var maDataSource = null; 686 var maTabSettings = null; 687 var maDataSettings = null; 688 var maObserveSettings = null; 690 var maTabAccounts = null; 691 var maDataAccounts = null; 692 var maObserveAccounts = null; 693 var maTooltipAccounts = null; 695 var maTabSecurity = null; 696 var maDataSecurity = null; 697 var maListSecurity = null; 698 var maObserveSecurity = null; 700 var maDiscard = null; 702 var ValidateSettings = function() { 705 var source = maObserveSettings.source; 707 // validate e statement field 708 label = $("label[for=inpEstmnt]"); 709 warning = $(label.find("span")[1]); 710 if (source.e_stmnt != source.o_stmnt) { 716 // validate rdc field 717 label = $("label[for=inpRdc]"); 718 warning = $(label.find("span")[1]); 719 if (source.e_rdc != source.o_rdc) { 725 // validate billpay id field 726 label = $("label[for=inpBpay]"); 727 warning = $(label.find("span")[1]); 728 if (source.e_payid != source.o_payid) { 735 (source.e_stmnt != source.o_stmnt) || 736 (source.e_rdc != source.o_rdc) || 737 (source.e_payid != source.o_payid); 739 return !source.e_dirty; 742 var ValidateSecurity = function() { 745 var source = maObserveSecurity.source; 747 // validate restriction field 748 label = $("label[for=inpRestriction]"); 749 warning = $(label.find("span")[1]); 752 var value_o = source.o_restr; 753 if (source.e_restr) { 754 if (typeof source.e_restr == "string") { 755 value_e = source.e_restr; 757 value_e = source.e_restr.value; 763 source.e_dirty = value_e != value_o; 764 if (value_e != value_o) { 770 return !source.e_dirty; 773 var DataBuildSettings = function(data) { 775 o_payid: data.m_payid, 776 o_stmnt: data.m_stmnt == "Y" ? true : false, 777 o_rdc: data.m_rdc ? parseInt(data.m_rdc) : null, 778 e_payid: data.m_payid, 779 e_stmnt: data.m_stmnt == "Y" ? true : false, 780 e_rdc: data.m_rdc ? parseInt(data.m_rdc) : null, 784 maObserveSettings.set("source", maDataSettings); 787 var DataBuildAccounts = function(data) { 789 maObserveAccounts.set("deposit", data.deposit); 790 maObserveAccounts.set("showDeposit", data.deposit.length > 0); 794 maObserveAccounts.set("loan", data.loan); 795 maObserveAccounts.set("showLoan", data.loan.length > 0); 799 maObserveAccounts.set("credit", data.credit); 800 maObserveAccounts.set("showCredit", data.credit.length > 0); 803 if (data.deposit.length == 0 && data.loan.length == 0 && data.credit.length == 0) { 804 maObserveAccounts.set("showNoRecords", true); 808 var DataBuildSecurity = function() { 810 { text: "Locked", value: "L" }, 811 { text: "Read Only", value: "R" }, 812 { text: "Unlocked", value: "" } 816 o_restr: maMember.m_restr, 817 e_restr: maMember.m_restr, 821 maObserveSecurity.set("source", maDataSecurity); 822 maObserveSecurity.set("list", maListSecurity); 825 var EventUpdateMember = function() { 827 if (!maTabs.validate()) { 828 var sourceSettings = maObserveSettings.source; 829 var sourceSecurity = maObserveSecurity.source; 832 // check for update to e statements 833 if (sourceSettings.e_stmnt != sourceSettings.o_stmnt) { 834 memberData.m_stmnt = sourceSettings.e_stmnt; 837 // check for update to bill pay id 838 if (sourceSettings.e_payid != sourceSettings.o_payid) { 839 memberData.m_payid = sourceSettings.e_payid; 842 // check for update to rdc setting 843 if (sourceSettings.e_rdc != sourceSettings.o_rdc) { 844 memberData.m_rdc = sourceSettings.e_rdc; 847 // check for update to restrictions 849 if (sourceSecurity.e_restr) { 850 if (typeof sourceSecurity.e_restr == "string") { 851 value_e = sourceSecurity.e_restr; 853 value_e = sourceSecurity.e_restr.value; 859 if (sourceSecurity.e_dirty) { 860 memberData.m_restr = value_e; 863 var stringData = JSON.stringify(memberData); 864 var memberRequest = { 865 operation: "memberUpdateSettings", 867 mParameters: stringData 870 maDataSource.transport.options.read.type = "POST"; 871 maDataSource.read(memberRequest); 875 var EventOpenWindow = function(e) { 876 var windowElement = this.element[0]; 877 var windowId = windowElement.id; 883 maCardWindows.push(this); 886 var EventCloseWindow = function(e) { 887 var windowElement = this.element[0]; 888 var windowId = windowElement.id; 891 case "discardConfirm": 892 EventPopWindow(windowId); 894 var sourceSettings = maObserveSettings.source; 895 var sourceSecurity = maObserveSecurity.source; 897 sourceSettings.e_stmnt = sourceSettings.o_stmnt; 898 sourceSettings.e_rdc = sourceSettings.o_rdc; 899 sourceSettings.e_payid = sourceSettings.o_payid; 900 sourceSettings.e_dirty = false; 903 sourceSecurity.e_restr = sourceSecurity.o_restr; 904 sourceSecurity.e_dirty = false; 906 // must set action to null to avoid infinite loop 907 // if not null it will continue to drop into 908 // this case and call close until stack overflow 913 if (windowId == "settings") { 914 if (!maTabs.validate()) { 918 EventPopWindow(windowId); 919 // setup validator, send back to hub 920 $.homecuValidator.setup({ 921 formStatusField: "formStatus", 922 formValidate: "cardContainerDiv" 926 EventPopWindow(windowId); 934 var EventPopWindow = function(windowId) { 936 for (var i = 0; i < maCardWindows.length; i++) { 937 var openWindow = maCardWindows[i].element[0]; 938 var openId = openWindow.id; 940 if (openId == windowId) { 947 maCardWindows.splice(popIndex, 1); 951 var InitDataSources = function() { 952 maDataSource = new kendo.data.DataSource({ 957 contentType: "application/x-www-form-urlencoded", 965 requestStart: function(request) { 969 requestEnd: function(response) { 970 setTimeout(hideWaitWindow, 500); 972 if (response.hasOwnProperty("response")) { 973 if (response.response.hasOwnProperty("Results")) { 974 var results = response.response.Results; 976 if (results.hasOwnProperty("errors")) { 977 $.homecuValidator.homecuResetMessage = true; 978 $.homecuValidator.displayMessage(results.errors, $.homecuValidator.settings.statusError); 979 } else if (results.hasOwnProperty("info")) { 980 $.homecuValidator.homecuResetMessage = true; 981 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess); 984 $.homecuValidator.displayMessage("Error Parsing Server", $.homecuValidator.settings.statusError); 987 $.homecuValidator.displayMessage("Error Parsing Server", $.homecuValidator.settings.statusError); 991 parse: function(response) { 994 var resultData = null; 995 var resultOperation = null; 997 if (response.hasOwnProperty("Results")) { 998 results = response.Results; 999 resultData = results.data; 1000 resultOperation = results.operation; 1003 if (results.hasOwnProperty("errors")) { 1007 if (resultData == undefined || resultData == null) { 1011 setTimeout(function() { 1012 switch (resultOperation) { 1013 case "memberReadSettings": 1014 DataBuildSettings(resultData.settings); 1015 DataBuildAccounts(resultData.accounts); 1016 DataBuildSecurity(); 1018 maMember.cardTitle= "Account Settings"; 1019 var template= kendo.template($("#titleTemplate").html()); 1020 maSettings.title(template(maMember)).center().open(); 1022 case "memberUpdateSettings": 1023 maMember = resultData.member.member; 1024 maMember.m_account = maMember.m_account == null ? null : maMember.m_account.trim(); 1025 maMember.m_stmnt = maMember.m_stmnt == null ? null : maMember.m_stmnt.trim(); 1026 maMember.m_payid = maMember.m_payid == null ? null : maMember.m_payid.trim(); 1027 maMember.m_rdc = maMember.m_rdc == null ? null : maMember.m_rdc; 1028 maMember.m_restr = maMember.m_restr == null ? null : maMember.m_restr.trim(); 1030 maCall("updateMemberInfo", resultData.member); 1031 maCall("updateMemberEncrypt", resultData.encrypt); 1033 DataBuildSettings(maMember); 1034 DataBuildSecurity(); 1036 // revalidate to remove flags 1048 var InitDataViews = function() { 1049 maSettings = maCardContainer.find("#settings").kendoWindow({ 1050 title: "Member Settings", 1057 activate: EventOpenWindow, 1058 close: EventCloseWindow, 1060 this.wrapper.css({ top: 100 }); 1062 }).data("kendoWindow"); 1064 maCancel = $("#lnkCancel"); 1065 maUpdate = $("#btnUpdate"); 1067 maTabSettings = $("#tabSettings"); 1068 maTabAccounts = $("#tabAccounts"); 1069 maTabSecurity = $("#tabSecurity"); 1070 maTabs = $("#tabs").hcuTabs({ 1072 { title: "Settings", text: "Settings", icon: "fa-check", selected: true, content: maTabSettings, validate: ValidateSettings }, 1073 { title: "Accounts", text: "Sub-Accounts", icon: "fa-info-circle", content: maTabAccounts }, 1074 { title: "Security", text: "Security", icon: "fa-lock", content: maTabSecurity, validate: ValidateSecurity } 1076 select: function(e) { 1077 maSettings.center(); 1078 maSettings.wrapper.css({ top: 100 }); 1080 footer: $(".bottomButtons") 1083 maObserveSettings = new kendo.observable({ 1085 change: function() { 1090 maObserveAccounts = new kendo.observable({ 1097 showNoRecords: false, 1100 maObserveSecurity = new kendo.observable({ 1103 change: function() { 1108 kendo.bind(maTabSettings, maObserveSettings); 1109 kendo.bind(maTabAccounts, maObserveAccounts); 1110 kendo.bind(maTabSecurity, maObserveSecurity); 1112 // USE THIS TO SELECT OVERFLOW IN JQUERY SELECTORS FOR TOOLTIP BELOW 1113 jQuery.extend(jQuery.expr[':
'], { 1114 overflown: function (el) { 1115 return el.offsetHeight < el.scrollHeight || el.offsetWidth < el.scrollWidth; 1119 maTooltipAccounts = homecuTooltip.defaults; 1120 maTooltipAccounts.filter = ".showEllipsis:overflown, .vsgDisabled"; 1121 maTooltipAccounts.content = function(e) { 1122 return $(e.target).text().trim(); 1124 $("#depositGrid").kendoTooltip(maTooltipAccounts); 1125 $("#loanGrid").kendoTooltip(maTooltipAccounts); 1126 $("#creditGrid").kendoTooltip(maTooltipAccounts); 1128 maDiscard = $("#settingsCancel").kendoDialog({ 1129 title: "Discard Changes", 1135 show: EventOpenWindow, 1136 close: EventCloseWindow, 1139 action: function() { maAction = "discardDeny"; } 1141 { text: "Yes", primary: true, 1142 action: function() { maAction = "discardConfirm"; } 1145 }).data("kendoDialog"); 1148 var InitDataActions = function() { 1149 maUpdate.on("click", EventUpdateMember); 1150 maCancel.on("click", function() { 1155 var InitWindowStack = function() { 1159 this.Open = function(windowStack) { 1162 $.homecuValidator.setup({ 1163 formStatusField: "status", 1164 formValidate: "settings" 1167 maCardWindows = windowStack; 1168 var memberRequest = { 1169 operation: "memberReadSettings", 1173 maDataSource.transport.options.read.type = "POST"; 1174 maDataSource.read(memberRequest); 1177 this.Close = function() { 1178 maSettings.destroy(); 1181 this.Data = function(payload, member) { 1182 maPayload = payload; 1186 this.Init = function(hubCall, cardContainer) { 1188 maCardContainer = cardContainer; 1194 maCall("AccountSettings", this);