19 require_once(
"$admLibrary/aMemberSupport.i");
20 require_once(
"$admLibrary/userSearch.i");
25 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
26 "payload" => array(
"filter" => FILTER_SANITIZE_STRING),
27 "mSelect" => array(
"filter" => FILTER_SANITIZE_STRING)
29 HCU_ImportVars($admVars,
"MEMBER_ACCOUNTS", $admOk);
31 $aOperation = isset($admVars[
"MEMBER_ACCOUNTS"][
"operation"]) ? $admVars[
"MEMBER_ACCOUNTS"][
"operation"] :
null;
32 $aPayload = isset($admVars[
"MEMBER_ACCOUNTS"][
"payload"]) ? $admVars[
"MEMBER_ACCOUNTS"][
"payload"] :
null;
33 $aSelect = isset($admVars[
"MEMBER_ACCOUNTS"][
"mSelect"]) ? $admVars[
"MEMBER_ACCOUNTS"][
"mSelect"] :
null;
35 $aMember = $aPayload ?
36 MemberDecrypt($SYSENV, $Cu, $aPayload) :
39 $aContext = $aPayload ?
40 MemberContext($SYSENV, $Cu, $aMember[
'member']) :
41 MemberContext($SYSENV, $Cu);
46 switch ($aOperation) {
50 case "readMemberAccounts":
51 header(
'Content-type: application/json');
53 $aryResult[
'data'][
'accounts'] = $aRelated[
'accounts'];
54 MemberReply($aryResult, $aryReply, $aOperation);
57 throw new Exception(
"Unknown server request: " . $aOperation);
61 }
catch (Exception $e) {
62 $aryReply[
'errors'][] = $e->getMessage();
63 $aryResult[
'data'] = array();
64 $aryResult[
'info'] = array();
66 MemberReply($aryResult, $aryReply, $aOperation);
84 $cuTable = $pContext[
'cu_table'];
85 $cuCode = $pContext[
'cu_code'];
86 $cuAccount = $pContext[
'm_account'];
94 distinct on (ua.accountnumber) 95 ua.accountnumber AS m_account, 97 u.user_name AS u_name, 98 u.is_group_primary AS u_primary";
100 SELECT DISTINCT ON (us.user_id) us.user_id 101 FROM {$cuTable}useraccounts us 102 WHERE us.accountnumber = '$cuAccount'";
105 FROM {$cuTable}useraccounts ua 106 LEFT JOIN {$cuTable}memberacct ma 107 ON ma.accountnumber = ua.accountnumber 108 LEFT JOIN {$cuTable}user u 109 ON u.user_id = ua.user_id 110 WHERE ua.user_id IN ($sqlSub)";
112 $sqlSelectRs = db_query($sqlSelect, $pDbh);
114 $pEnv[
'logger']->error(db_last_error());
115 throw new Exception(
"Failed to read related accounts.");
119 $result_arr = db_fetch_all($sqlSelectRs);
125 foreach ($result_arr as $key => $value) {
126 $sqlData[$key] = $value;
130 $uPayload = readUserSearch($pDbh, $cuCode, array(
131 "a" => array (
"username"=>$value[
'u_name'])
134 $mContext = MemberContext($pEnv, $cuCode, array(
"m_account" => $value[
'm_account']));
135 $mSelect = MemberSelect($pEnv, $pDbh, $mContext);
136 $mPayload = MemberEncrypt($pEnv, $cuCode, $mSelect);
140 $mPayload = urlencode($mPayload);
141 $uPayload = urlencode($uPayload[
'encryption']);
144 $sqlData[$key][
'm_payload'] = $mPayload;
145 $sqlData[$key][
'u_payload'] = $uPayload;
149 $sqlReturn[
'accounts'] = $sqlData;
166 <div
class=
"hcu-secondary">
167 <div
class=
"small vsgSecondary">
168 <span>The <span
class=
"fa fa-asterisk"></span> means that the user is primary
for a group.</span><br>
169 <span>Click a user
's name to select that user in the User Hub.</span><br> 170 <span>Click a user's account number to select the member account in the Account Hub.</span>
173 <div
id=
"accountsGrid"></div>
175 <div
class=
"hcu-template">
176 <div
class=
"hcu-edit-buttons k-state-default">
177 <span
class=
"hcu-icon-delete">
179 <a href=
"##" id=
"lnkCancel" style=
"">Cancel</a>
214 <script type=
"text/javascript">
216 var MemberAccounts =
function() {
217 var maCardContainer =
null;
218 var maCardWindows =
null;
220 var maPayload =
null;
225 var maDataSource =
null;
227 var maAccounts =
null;
228 var maAccountsGrid =
null;
229 var maAccountsData =
null;
233 var DataBuildAccounts =
function(data) {
237 for (var i = 0; i < data.length; i++) {
238 if (currName != data[i].u_name) {
239 currName = data[i].u_name;
247 m_payload: data[i].m_payload.trim(),
248 u_payload: data[i].u_payload.trim(),
249 u_name: data[i].u_name.trim(),
250 m_account: data[i].m_account.trim(),
251 u_primary: data[i].u_primary ==
"t" ? true :
false 254 maAccountsData.push(account);
257 maAccountsGrid.dataSource.data(maAccountsData);
260 var EventOpenWindow =
function(e) {
261 var windowElement = this.element[0];
262 var windowId = windowElement.id;
268 maCardWindows.push(
this);
271 var EventCloseWindow =
function(e) {
272 var windowElement = this.element[0];
273 var windowId = windowElement.id;
277 EventPopWindow(windowId);
284 var EventPopWindow =
function(windowId) {
286 for (var i = 0; i < maCardWindows.length; i++) {
287 var openWindow = maCardWindows[i].element[0];
288 var openId = openWindow.id;
290 if (openId == windowId) {
297 maCardWindows.splice(popIndex, 1);
301 var InitDataSources =
function() {
303 maDataSource =
new kendo.data.DataSource({
308 contentType:
"application/x-www-form-urlencoded",
316 requestStart:
function(request) {
319 requestEnd:
function(response) {
320 setTimeout(hideWaitWindow, 500);
322 if (response.hasOwnProperty(
"response")) {
323 if (response.response.hasOwnProperty(
"Results")) {
324 var results = response.response.Results;
326 if (results.hasOwnProperty(
"error")) {
327 $.homecuValidator.homecuResetMessage =
true;
328 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
329 }
else if (results.hasOwnProperty(
"info")) {
330 $.homecuValidator.homecuResetMessage =
true;
331 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
334 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
337 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
341 parse:
function(response) {
343 var resultData =
null;
344 var resultOperation =
null;
346 if (response.hasOwnProperty(
"Results")) {
347 results = response.Results;
348 resultData = results.data;
349 resultOperation = results.operation;
352 if (results.hasOwnProperty(
"errors")) {
356 if (resultData == undefined || resultData ==
null) {
360 setTimeout(
function() {
361 switch (resultOperation) {
362 case "readMemberAccounts":
363 DataBuildAccounts(resultData.accounts);
364 maMember.cardTitle=
"Related Accounts";
365 var
template= kendo.template($(
"#titleTemplate").html());
366 maAccounts.title(
template(maMember)).center().open();
376 var InitDataViews =
function() {
377 maAccounts = $(
"#accounts").kendoWindow({
378 title:
"Related Accounts",
385 activate: EventOpenWindow,
386 close: EventCloseWindow,
388 this.wrapper.css({ top: 100 });
390 }).data(
"kendoWindow");
392 maAccountsGrid = $(
"#accountsGrid").kendoGrid({
396 dataBound:
function() {
397 $(
"a[id^=ACCT_]").each(
function(i) {
399 var tagText = tag.text().trim();
400 var tagParent = tag.parent();
401 if (tagText == maMember.m_account) {
404 "<div class=\"hcu-secondary\">" +
405 "<span>" + maMember.m_account +
"</span>" +
406 "<span class=\"small vsgSecondary\"> (selected)</span>" +
413 template:
"<span class=\"hcu-secondary\"><span class=\"vsgSecondary\">No Records Found</span></span>" 416 { title:
" ", width:
"35px",
417 template:
"#if(u_primary && u_row == 0){#<span class=\"fa fa-asterisk\"></span>#}#" },
418 { field:
"u_name", title:
"User Name",
419 template:
"#if(u_row == 0) {#<a href=\"main.prg?ft=22&payload=#=u_payload#\">#= u_name #<i class=\"fa fa-user fa-fw\"></i></span>#}#" },
420 { field:
"a_type", title:
"Account Number",
421 template:
"<a href=\"main.prg?ft=103101&payload=#=m_payload#\" id=\"ACCT_#= m_account #\">#= m_account #<i class=\"fa fa-book fa-fw\"></i></a>" }
423 }).data(
"kendoGrid");
425 maCancel = $(
"#lnkCancel");
426 maStatus = $(
"#status");
430 var InitDataActions =
function() {
431 maCancel.on(
"click",
function() {
436 this.Data =
function(payload, member) {
441 this.Open =
function(windowStack) {
443 $.homecuValidator.setup({
444 formStatusField:
"status",
445 formValidate:
"accounts" 448 maCardWindows = windowStack;
449 var memberRequest = {
450 operation:
"readMemberAccounts",
454 maDataSource.transport.options.read.type =
"POST";
455 maDataSource.read(memberRequest);
458 this.Close =
function() {
459 maAccounts.destroy();
462 $.homecuValidator.setup({
463 formStatusField:
"formStatus",
464 formValidate:
"cardContainerDiv" 468 this.Init =
function(hubCall, cardContainer) {
470 maCardContainer = cardContainer;
476 maCall(
"MemberAccounts",
this);