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_USERS", $admOk);
31 $rOperation = isset($admVars[
"MEMBER_USERS"][
"operation"]) ? $admVars[
"MEMBER_USERS"][
"operation"] :
null;
32 $rPayload = isset($admVars[
"MEMBER_USERS"][
"payload"]) ? $admVars[
"MEMBER_USERS"][
"payload"] :
null;
33 $rSelect = isset($admVars[
"MEMBER_USERS"][
"mSelect"]) ? $admVars[
"MEMBER_USERS"][
"mSelect"] :
null;
35 $rMember = $rPayload ?
36 MemberDecrypt($SYSENV, $Cu, $rPayload) :
39 $rContext = $rPayload ?
40 MemberContext($SYSENV, $Cu, $rMember[
'member']) :
41 MemberContext($SYSENV, $Cu);
46 switch ($rOperation) {
50 case "readMemberUsers":
51 header(
'Content-type: application/json');
53 $rRelated = readMemberUsers($SYSENV, $dbh, $rContext);
54 $aryResult[
'data'][
'users'] = $rRelated[
'users'];
55 MemberReply($aryResult, $aryReply, $rOperation);
58 throw new Exception(
"Unknown server request: " . $rOperation);
62 }
catch (Exception $e) {
63 $aryReply[
'errors'][] = $e->getMessage();
64 $aryResult[
'data'] = array();
65 $aryResult[
'info'] = array();
67 MemberReply($aryResult, $aryReply, $rOperation);
83 function readMemberUsers($pEnv, $pDbh, $pContext) {
84 $cuTable = $pContext[
'cu_table'];
85 $cuCode = $pContext[
'cu_code'];
86 $cuAccount = $pContext[
'm_account'];
94 u.user_name AS u_name, 95 u.is_group_primary AS u_primary, 96 ua.accounttype AS a_type, 97 ua.recordtype AS a_record, 98 ua.view_balances AS a_balances, 99 ua.view_transactions AS a_transactions";
105 FROM {$cuTable}useraccounts ua 106 INNER JOIN {$cuTable}user u ON u.user_id = ua.user_id 107 WHERE ua.accountnumber = '$cuAccount' 108 ORDER BY u.user_name, ua.accounttype";
109 $sqlSelectRs = db_query($sqlSelect, $pDbh);
111 $pEnv[
'logger']->error(db_last_error());
112 throw new Exception(
"Failed to read related users.");
116 $result_arr = db_fetch_all($sqlSelectRs);
122 foreach ($result_arr as $key => $value) {
123 $sqlData[$key] = $value;
127 $sqlPayload = readUserSearch($pDbh, $cuCode, array(
128 "a" => array (
"username"=>$value[
'u_name'])
133 $sqlPayload = urlencode($sqlPayload[
'encryption']);
136 $sqlData[$key][
'u_payload'] = $sqlPayload;
139 $sqlReturn[
'users'] = $sqlData;
154 <div
class=
"hcu-secondary">
155 <div
class=
"small vsgSecondary">
156 <span>The <span
class=
"fa fa-asterisk"></span> means that the user is primary
for a group.</span>
158 <span>Click a
User's name to select that user in the User Hub.</span> 161 <div id="relatedGrid"></div> 163 <div class="hcu-template"> 164 <div class="hcu-edit-buttons k-state-default"> 165 <span class="hcu-icon-delete"> 167 <a href="##" id="lnkCancel">Cancel</a> 206 <script type="text/javascript">
207 //# sourceURL=memberUsers.js
208 var MemberUsers = function() {
209 var mrCardContainer = null;
210 var mrCardWindows = null;
212 var mrPayload = null;
217 var mrDataSource = null;
219 var mrRelated = null;
220 var mrRelatedGrid = null;
221 var mrRelatedGridData = null;
225 var DataBuildUsers = function(data) {
226 mrRelatedGridData = [];
232 for (var i = 0; i < data.length; i++) {
233 if (currName != data[i].u_name) {
234 currName = data[i].u_name;
242 u_payload: data[i].u_payload.trim(),
243 u_name: data[i].u_name.trim(),
244 u_primary: data[i].u_primary == "t" ? true : false,
245 a_type: data[i].a_type.trim(),
246 a_record: data[i].a_record.trim(),
247 a_balances: data[i].a_balances == "t" ? "Y" : "N",
248 a_transactions: data[i].a_transactions == "t" ? "Y" : "N"
251 mrRelatedGridData.push(user);
254 mrRelatedGrid.dataSource.data(mrRelatedGridData);
257 var EventMemberSelect = function(member) {
258 var memberRequest = {
259 operation: "selectMemberRelated",
260 mSelect: JSON.stringify(member)
263 mrDataSource.transport.options.read.type = "POST";
264 mrDataSource.read(memberRequest);
267 var EventOpenWindow = function(e) {
268 var windowElement = this.element[0];
269 var windowId = windowElement.id;
275 mrCardWindows.push(this);
278 var EventCloseWindow = function(e) {
279 var windowElement = this.element[0];
280 var windowId = windowElement.id;
284 EventPopWindow(windowId);
291 var EventPopWindow = function(windowId) {
293 for (var i = 0; i < mrCardWindows.length; i++) {
294 var openWindow = mrCardWindows[i].element[0];
295 var openId = openWindow.id;
297 if (openId == windowId) {
304 mrCardWindows.splice(popIndex, 1);
308 var InitDataSources = function() {
309 mrDataSource = new kendo.data.DataSource({
314 contentType: "application/x-www-form-urlencoded",
322 requestStart: function(request) {
325 requestEnd: function(response) {
326 setTimeout(hideWaitWindow, 500);
328 if (response.hasOwnProperty("response")) {
329 if (response.response.hasOwnProperty("Results")) {
330 var results = response.response.Results;
332 if (results.hasOwnProperty("error")) {
333 $.homecuValidator.homecuResetMessage = true;
334 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
335 } else if (results.hasOwnProperty("info")) {
336 $.homecuValidator.homecuResetMessage = true;
337 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
340 $.homecuValidator.displayMessage("Error Parsing Server", $.homecuValidator.settings.statusError);
343 $.homecuValidator.displayMessage("Error Parsing Server", $.homecuValidator.settings.statusError);
347 parse: function(response) {
349 var resultData = null;
350 var resultOperation = null;
352 if (response.hasOwnProperty("Results")) {
353 results = response.Results;
354 resultData = results.data;
355 resultOperation = results.operation;
358 if (results.hasOwnProperty("errors")) {
362 if (resultData == undefined || resultData == null) {
366 setTimeout(function() {
367 switch (resultOperation) {
368 case "readMemberUsers":
369 DataBuildUsers(resultData.users);
370 mrMember.cardTitle= "Group Info";
371 var template= kendo.template($("#titleTemplate").html());
372 mrRelated.title(template(mrMember)).center().open();
382 var InitDataViews = function() {
383 mrRelated = mrCardContainer.find("#related").kendoWindow({
384 title: "Related Users",
391 activate: EventOpenWindow,
392 close: EventCloseWindow,
394 this.wrapper.css({ top: 100 });
396 }).data("kendoWindow");
398 var restrictionTemplate= kendo.template("<span>\\# if (#: code # == 'Y
') { \\# <div class='restriction allow readonly hcu-all-100
'><i class='fa fa-check
'></i></div> " 399 + "\\# } else { \\#<div class='restriction ban readonly hcu-all-100
'><i class='fa fa-ban
'></i></div> \\# } \\#</span>"); 401 mrRelatedGrid = $("#relatedGrid").kendoGrid({ 403 data: mrRelatedGridData 406 template: "<span class=\"hcu-secondary\"><span class=\"vsgSecondary\">No Records Found</span></span>" 409 { title: " ", width: "35px", 410 template: "#if(u_primary && u_row == 0){#<span class=\"fa fa-asterisk\"></span>#}#" }, 411 { field: "u_name", title: "User Name", 412 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>#}#" }, 413 { field: "a_type", title: "Account", 414 template: "<span>#= a_type #</span>" }, 415 { field: "a_record", title: "Type", 416 template: "<span># if(a_record == \"L\"){# Loan #}else{# Deposit #}#</span>" }, 417 { field: "a_balances", title: "Balances", 418 template: restrictionTemplate({code: "a_balances"}) }, 419 { field: "a_transactions", title: "History", 420 template: restrictionTemplate({code: "a_transactions"}) } 422 }).data("kendoGrid"); 424 mrCancel = $("#lnkCancel"); 425 mrInfoBar = $("#relatedInfo"); 429 var InitDataActions = function() { 431 mrCancel.on("click", function() { 436 this.Data = function(message, member) { 441 this.Open = function(windowStack) { 443 $.homecuValidator.setup({ 444 formStatusField: "status", 445 formValidate: "related" 448 mrCardWindows = windowStack; 449 var memberRequest = { 450 operation: "readMemberUsers", 454 mrDataSource.transport.options.read.type = "POST"; 455 mrDataSource.read(memberRequest); 458 this.Close = function() { 461 // reset validator for hub cript 462 $.homecuValidator.setup({ 463 formStatusField: "formStatus", 464 formValidate: "cardContainerDiv" 468 this.Init = function(hubCall, cardContainer) { 470 mrCardContainer = cardContainer; 476 mrCall("MemberUsers", this);