19 require_once(
"$admLibrary/aGroupSupport.i");
24 "operation" => array(
"filter" => FILTER_SANITIZE_STRING),
25 "payload" => array(
"filter" => FILTER_SANITIZE_STRING),
26 "gRefresh" => array(
"filter" => FILTER_SANITIZE_STRING),
27 "gPrimary" => array(
"filter" => FILTER_SANITIZE_STRING),
29 HCU_ImportVars($admVars,
"GROUP_USERS", $admOk);
31 $uOperation = isset($admVars[
"GROUP_USERS"][
"operation"]) ? $admVars[
"GROUP_USERS"][
"operation"] :
null;
32 $uPayload = isset($admVars[
"GROUP_USERS"][
"payload"]) ? $admVars[
"GROUP_USERS"][
"payload"] :
null;
33 $uRefresh = isset($admVars[
"GROUP_USERS"][
"gRefresh"]) ? $admVars[
"GROUP_USERS"][
"gRefresh"] :
null;
34 $uPrimary = isset($admVars[
"GROUP_USERS"][
"gPrimary"]) ? $admVars[
"GROUP_USERS"][
"gPrimary"] :
null;
40 GroupDecrypt($SYSENV, $Cu, $uPayload) :
44 $uContext = $uPayload ?
45 GroupContext($SYSENV, $Cu, $uGroup[
'group']) :
46 GroupContext($SYSENV, $Cu);
51 switch ($uOperation) {
55 case "groupReadUsers":
56 header(
'Content-type: application/json');
57 $gUsers = GroupReadUsers($SYSENV, $dbh, $uContext);
59 $aryResult[
'data'][
'users'] = $gUsers[
'users'];
60 GroupReply($aryResult, $aryReply, $uOperation);
62 case "groupCleanUser":
63 header(
'Content-type: application/json');
64 $gValidate = GroupValidateUsers($SYSENV, $uRefresh);
65 $gUser = GroupCleanUser($SYSENV, $dbh, $uContext, $gValidate[
'user']);
66 $gUsers = GroupReadUsers($SYSENV, $dbh, $uContext);
67 $aryResult[
'data'][
'users'] = $gUsers[
'users'];
68 $aryResult[
'info'][] = $gUser[
'message'];
69 GroupReply($aryResult, $aryReply, $uOperation);
71 case "groupUpdatePrimary":
72 header(
'Content-type: application/json');
73 $gValidate = GroupValidateUsers($SYSENV, $uPrimary);
75 if ($gValidate[
'primary'][
'mpl']) {
77 $gPrimary = GroupCleanPrimary($SYSENV, $dbh, $uContext, $gValidate[
'primary']);
80 $gPrimary = GroupUpdatePrimary($SYSENV, $dbh, $uContext, $gValidate[
'primary']);
85 $gUsers = GroupReadUsers($SYSENV, $dbh, $uContext);
86 $aryResult[
'data'][
'users'] = $gUsers[
'users'];
87 $aryResult[
'info'][] = $gPrimary[
'message'];
90 $uContext[
'g_name'] = $uGroup[
'group'][
'g_name'];
91 $gGroup = GroupSelect($SYSENV, $dbh, $uContext);
92 $gEncrypt = GroupEncrypt($SYSENV, $Cu, $uGroup);
93 $aryResult[
'data'][
'group'] = $gGroup;
94 $aryResult[
'data'][
'encrypt'] = $gEncrypt;
96 GroupReply($aryResult, $aryReply, $uOperation);
99 throw new Exception(
"Unknown server request: " . $uOperation);
103 }
catch (Exception $e) {
104 $aryReply[
'errors'][] = $e->getMessage();
105 $aryResult[
'data'] = array();
106 $aryResult[
'info'] = array();
108 GroupReply($aryResult, $aryReply, $uOperation);
123 function GroupValidateUsers($pEnv, $pUsers) {
124 $gUsers = html_entity_decode($pUsers, ENT_QUOTES);
125 $gUsers = json_decode($gUsers,
true);
128 if (isset($gUsers[
'uId'])) {
129 $vUsers[
'user'] = intval($gUsers[
'uId']);
132 if (isset($gUsers[
'uPrimary'])) {
133 $vUsers[
'primary'][
'new'] =
"";
134 $vUsers[
'primary'][
'old'] =
"";
136 foreach ($gUsers[
'uPrimary'][
'uNew'] as $key => $value) {
137 $vUsers[
'primary'][
'new'] .= $value;
138 $vUsers[
'primary'][
'new'] .=
",";
141 foreach ($gUsers[
'uPrimary'][
'uOld'] as $key => $value) {
142 $vUsers[
'primary'][
'old'] .= $value;
143 $vUsers[
'primary'][
'old'] .=
",";
146 $vUsers[
'primary'][
'new'] = rtrim($vUsers[
'primary'][
'new'],
",");
147 $vUsers[
'primary'][
'old'] = rtrim($vUsers[
'primary'][
'old'],
",");
148 $vUsers[
'primary'][
'mpl'] = $gUsers[
'uPrimary'][
'uMpl'] ? true :
false;
167 function GroupCleanPrimary($pEnv, $pDbh, $pContext, $pPrimary) {
168 if ($pPrimary ==
null || $pPrimary ==
"") {
return array(); }
170 $gId = $pContext[
'g_id'];
171 $pId = $pContext[
'p_id'];
172 $cuTable = $pContext[
'cu_table'];
173 $cuCode = $pContext[
'cu_code'];
175 $uOldId = $pPrimary[
'old'];
176 $uNewId = $pPrimary[
'new'];
180 $sqlReturn = array();
182 UPDATE {$cuTable}user 183 SET is_group_primary = 'TRUE' 184 WHERE user_id IN ($uNewId); 186 UPDATE {$cuTable}user 187 SET is_group_primary = 'FALSE' 188 WHERE user_id IN ($uOldId);";
189 $sqlUpdateRs = db_query($sqlUpdate, $pDbh);
191 throw new Exception(
"Failed to correct the primary user status.");
194 $sqlReturn[
'message'] =
"Primary owner status has been corrected successfully.";
214 function GroupUpdatePrimary($pEnv, $pDbh, $pContext, $pPrimary) {
215 if ($pPrimary ==
null || $pPrimary ==
"") {
return array(); }
217 $gId = $pContext[
'g_id'];
218 $pId = $pContext[
'p_id'];
219 $cuTable = $pContext[
'cu_table'];
220 $cuCode = $pContext[
'cu_code'];
222 $uOldId = $pPrimary[
'old'];
223 $uNewId = $pPrimary[
'new'];
228 $sqlReturn = array();
229 $sqlColumnsUnique =
" 230 accountnumber, accounttype, certnumber, recordtype";
232 display_name,display_order,display_qty,display_qty_type, 233 int_deposit,int_withdraw,ext_deposit,ext_withdraw, 234 view_balances,view_transactions";
236 SELECT $sqlColumnsUnique 237 FROM {$cuTable}useraccounts 238 WHERE user_id = $uNewId";
240 SELECT '_update' AS action, $sqlColumnsUnique, $sqlColumns 241 FROM {$cuTable}useraccounts 242 WHERE user_id = $uOldId 243 AND ($sqlColumnsUnique) IN ($sqlWhere) 247 SELECT '_insert' AS action, $sqlColumnsUnique, $sqlColumns 248 FROM {$cuTable}useraccounts 249 WHERE user_id = $uOldId 250 AND ($sqlColumnsUnique) NOT IN ($sqlWhere)";
251 $sqlSelectRs = db_query($sqlSelect, $pDbh);
253 $pEnv[
'logger']->error(db_last_error());
254 throw new Exception(
"Failed to read user accounts.");
261 if (db_fetch_all($sqlSelectRs)) {
262 foreach (db_fetch_all($sqlSelectRs) as $key => $value) {
264 $sqlAction = $value[
'action'];
266 $sqlValuesUnique =
"";
267 $sqlValuesUnique .=
"'". prep_save($value[
'accountnumber'], 12) .
"',";
268 $sqlValuesUnique .=
"'". prep_save($value[
'accounttype'], 25) .
"',";
269 $sqlValuesUnique .= intval($value[
'certnumber']) .
",";
270 $sqlValuesUnique .=
"'". prep_save($value[
'recordtype'], 1) .
"'";
273 $sqlValues .=
"'". prep_save($value[
'display_name'], 255) .
"',";
274 $sqlValues .= intval($value[
'display_order']) .
",";
275 $sqlValues .= intval($value[
'display_qty']) .
",";
276 $sqlValues .=
"'". prep_save($value[
'display_qty_type'], 1) .
"',";
277 $sqlValues .= $value[
'int_deposit'] ==
"t" ?
"TRUE," :
"FALSE,";
278 $sqlValues .= $value[
'int_withdraw'] ==
"t" ?
"TRUE," :
"FALSE,";
279 $sqlValues .= $value[
'ext_deposit'] ==
"t" ?
"TRUE," :
"FALSE,";
280 $sqlValues .= $value[
'ext_withdraw'] ==
"t" ?
"TRUE," :
"FALSE,";
281 $sqlValues .= $value[
'view_balances'] ==
"t" ?
"TRUE," :
"FALSE,";
282 $sqlValues .= $value[
'view_transactions'] ==
"t" ?
"TRUE" :
"FALSE";
284 if ($sqlAction ==
"_insert") {
286 INSERT INTO {$cuTable}useraccounts (user_id, $sqlColumnsUnique, $sqlColumns) 287 VALUES ($uNewId, $sqlValuesUnique, $sqlValues);";
288 }
else if ($sqlAction ==
"_update") {
290 UPDATE {$cuTable}useraccounts 291 SET ($sqlColumns) = ($sqlValues) 292 WHERE (user_id, $sqlColumnsUnique) = ($uNewId, $sqlValuesUnique);";
298 $sqlMbrRightsDelete =
" 299 DELETE FROM {$cuTable}memberacctrights 300 WHERE user_id = $uNewId";
303 $sqlMbrRightsUpdate =
" 304 UPDATE {$cuTable}memberacctrights 305 SET (user_id) = ($uNewId) 306 WHERE user_id = $uOldId";
309 $sqlNewPrimaryUpdate =
" 310 UPDATE {$cuTable}user 311 SET (is_group_primary) = ('TRUE') 312 WHERE user_id = $uNewId";
315 $sqlOldPrimaryUpdate =
" 316 UPDATE {$cuTable}user 317 SET (is_group_primary) = ('FALSE') 318 WHERE user_id = $uOldId";
323 $sqlTrans =
"BEGIN TRANSACTION";
324 $sqlTransRs = db_query($sqlTrans, $pDbh);
327 if (trim($sqlAcctInsert) !=
"") {
328 $sqlAcctInsertRs = db_query($sqlAcctInsert, $pDbh);
329 if (!$sqlAcctInsertRs) {
330 $pEnv[
'logger']->error(db_last_error());
331 throw new Exception(
"Failed to add sub-accounts for the selected user.");
335 if (trim($sqlAcctUpdate) !=
"") {
336 $sqlAcctUpdateRs = db_query($sqlAcctUpdate, $pDbh);
337 if (!$sqlAcctUpdateRs) {
338 $pEnv[
'logger']->error(db_last_error());
339 throw new Exception(
"Failed to update sub-accounts for the selected user.");
343 $sqlMbrRightsDelete = db_query($sqlMbrRightsDelete, $pDbh);
344 if (!$sqlMbrRightsDelete) {
345 $pEnv[
'logger']->error(db_last_error());
346 throw new Exception(
"Failed to delete member account rights for the selected user.");
349 $sqlMbrRightsUpdate = db_query($sqlMbrRightsUpdate, $pDbh);
350 if (!$sqlMbrRightsUpdate) {
351 $pEnv[
'logger']->error(db_last_error());
352 throw new Exception(
"Failed to update member account rights for the selected user.");
355 $sqlOldPrimaryUpdate = db_query($sqlOldPrimaryUpdate, $pDbh);
356 if (!$sqlOldPrimaryUpdate) {
357 $pEnv[
'logger']->error(db_last_error());
358 throw new Exception(
"Failed to update current primary user status to non-primary user.");
361 $sqlNewPrimaryUpdate = db_query($sqlNewPrimaryUpdate, $pDbh);
362 if (!$sqlNewPrimaryUpdate) {
363 $pEnv[
'logger']->error(db_last_error());
364 throw new Exception(
"Failed to update selected user status to primary user.");
369 $sqlTrans =
"COMMIT TRANSACTION";
370 $sqlTransRs = db_query($sqlTrans, $pDbh);
371 }
catch (Exception $e) {
372 $pEnv[
'logger']->error(db_last_error());
374 $sqlTrans =
"ROLLBACK TRANSACTION";
375 $sqlTransRs = db_query($sqlTrans, $pDbh);
376 throw new Exception($e->getMessage());
379 $sqlReturn[
'message'] =
"Primary user has been updated successfully.";
397 function GroupCleanUser($pEnv, $pDbh, $pContext, $pUser) {
398 if ($pUser ==
null || $pUser ==
"") {
return array(); }
400 $gId = $pContext[
'g_id'];
401 $pId = $pContext[
'p_id'];
402 $cuTable = $pContext[
'cu_table'];
403 $cuCode = $pContext[
'cu_code'];
406 $sqlReturn = array();
408 SELECT sa.accountnumber, sa.accounttype, sa.certnumber 409 FROM ${cuCode}useraccounts sa 410 INNER JOIN ${cuCode}user su 411 ON su.user_id = sa.user_id 412 AND su.group_id = $gId 413 AND su.is_group_primary = 'TRUE'";
415 DELETE FROM ${cuCode}useraccounts a 416 WHERE user_id = $cuUser 417 AND (a.accountnumber, a.accounttype, a.certnumber) NOT IN ($sqlSub)";
418 $sqlDeleteRs = db_query($sqlDelete, $pDbh);
420 throw new Exception(
"Failed to reset this user's account access.");
423 $sqlReturn[
'message'] =
"User account access has been successfully cropped.";
439 function GroupReadUsers($pEnv, $pDbh, $pContext) {
440 $gId = $pContext[
'g_id'];
441 $pId = $pContext[
'p_id'];
442 $cuTable = $pContext[
'cu_table'];
443 $cuCode = $pContext[
'cu_code'];
445 $sqlReturn = array();
449 u.user_name AS u_name, 450 u.is_group_primary AS u_primary";
451 $sqlSelect =
"SELECT $sqlColumns 452 FROM {$cuTable}user u 453 WHERE u.group_id = $gId 454 ORDER BY u.user_name";
455 $sqlSelectRs = db_query($sqlSelect, $pDbh);
457 $pEnv[
'logger']->error(db_last_error());
458 throw new Exception(
"Failed to read group users.");
460 $sqlData[
'users'] = db_fetch_all($sqlSelectRs);
461 $sqlData[
'primary'] = array();
462 if (count($sqlData[
'users']) > 0) {
463 foreach ($sqlData[
'users'] as $keyU => $valueU) {
464 if ($valueU[
'u_primary'] ==
"t") {
465 $sqlData[
'primary'][] = $valueU[
'u_id'];
467 $sqlData[
'users'][$keyU][
'a_count'] = 0;
468 $uPayload = readUserSearch($pDbh, $cuCode, array(
469 "a" => array (
"username"=>$valueU[
'u_name'])
471 $sqlData[
'users'][$keyU][
'u_payload'] = urlencode($uPayload[
'encryption']);
476 foreach ($sqlData[
'users'] as $keyU => $valueU) {
477 if ($valueU[
'u_primary'] ==
"t") {
480 foreach ($sqlData[
'primary'] as $keyP => $valueP) {
487 FROM {$cuTable}useraccounts 488 WHERE user_id = '$valueP'";
491 FROM {$cuTable}useraccounts 492 WHERE user_id = '{$valueU['u_id']}' 493 AND ($sqlColumns) NOT IN ($sqlSub)";
495 $sqlSelectRs = db_query($sqlSelect, $pDbh);
497 $pEnv[
'logger']->error(db_last_error());
498 throw new Exception(
"Failed to read account access between primary and non-primary users.");
500 $cCount += db_fetch_assoc($sqlSelectRs, 0)[
'count'];
502 $sqlData[
'users'][$keyU][
'a_count'] = $cCount;
508 foreach ($sqlData[
'users'] as $key => $value) {
509 $sqlData[
'users'][$key][
'o_count'] = $aCount;
512 unset($sqlData[
'primary']);
513 $sqlReturn[
'users'] = $sqlData[
'users'];
523 function PrintGroupUsers() { ?>
525 <div
id=
"status"></div>
526 <div
class=
"col-sm-12"> </div>
527 <div
class=
"well well-sm col-sm-12">
528 <div data-bind=
"visible: showPrimaryWarning">
530 <span
class=
"fa fa-exclamation-triangle" style=
"color: #ff9800;"></span>
531 This group has multiple primary users. Please correct
this by selecting a single user below.
534 <div data-bind=
"visible: showAccessWarning">
536 <span
class=
"fa fa-exclamation-triangle" style=
"color: #ff9800;"></span>
537 This group has users with access to sub-accounts which the primary owner does not have. Please correct
this by clicking the crop button to the right of each row.
542 data-selectable=
"row" 543 data-no-records=
"No users were found for this group" 546 events: { change: change, dataBound: grid }" 548 { field: 'u_name', title: 'User Name', 549 template: '<a href=\'main.prg?ft=22&payload=#= u_payload #\'>#= u_name # <i class=\'fa fa-user\'></i></a>' }, 550 { field: 'u_primary', title: 'Primary User', 551 template: '<input id=\'USER_#=u_id#\' type=\'checkbox\' style=\'margin-top: -2px;\'>'}, 553 attributes: { class: 'text-right' }, 554 template: '#if(a_count > 0 && !u_primary){#<button class=\'k-button fa fa-crop\' style=\'min-width: 25px;\'></button>#}#' } 559 <div
class=
"hcu-template">
560 <div
class=
"hcu-edit-buttons k-state-default">
561 <span
class=
"hcu-icon-delete"></span>
562 <a href=
"##" id=
"lnkCancel">Cancel</a>
564 <a href=
"##" id=
"btnUpdate" class=
"k-button k-primary">
565 <i
class=
"fa fa-check fa-lg"></i>
572 <div
id=
"guDiscard"></div>
573 <div
id=
"guNotifyPrimary"></div>
574 <div
id=
"guNotifyRefreshFail"></div>
575 <div
id=
"guNotifyRefresh"></div>
615 <script type=
"text/javascript">
619 var guCardContainer =
null;
620 var guCardWindows =
null;
622 var guPayload =
null;
626 var guDataSource =
null;
629 var guDiscard =
null;
630 var guNotifyPrimary =
null;
631 var guNotifyRefresh =
null;
632 var guNotifyRefreshFail =
null;
633 var guObserve =
null;
634 var guTooltip =
null;
636 var DataBuildUsers =
function(data) {
642 for (var i = 0; i < data.length; i++) {
644 u_id: parseInt(data[i].u_id),
645 u_name: data[i].u_name ? data[i].u_name.trim() :
"",
646 u_payload: data[i].u_payload ? data[i].u_payload.trim() :
"",
647 u_primary: data[i].u_primary ==
"t" ? true :
false,
648 a_count: parseInt(data[i].a_count),
649 o_count: parseInt(data[i].o_count)
652 if (user.u_primary) {
653 build.o_primary.push(user.u_id);
654 build.e_primary.push(user.u_id);
660 guObserve.set(
"source", build);
661 guObserve.set(
"users", list);
662 guObserve.set(
"showPrimaryWarning", (build.o_primary.length > 1));
663 if (list.length > 0) {
664 guObserve.set(
"showAccessWarning", (list[0].o_count > 0));
668 var ValidateUsers =
function() {
669 var source = guObserve.source;
670 var user_e = source.e_primary;
671 var user_o = source.o_primary;
673 source.e_dirty =
false;
674 for (var i = 0; i < user_o.length; i++) {
675 if ($.inArray(user_o[i], user_e) == -1) {
676 source.e_dirty =
true;
681 return !source.e_dirty;
684 var EventShowTip =
function(e) {
685 var targetContent =
"This user cannot be selected as a primary group owner.";
687 return targetContent;
690 var EventCheckboxChange =
function(e) {
692 var boxValue = $(box).prop(
"checked");
693 var boxId = box.attr(
"id");
694 var uId = boxId.substring(5, boxId.length);
697 if (boxValue || guObserve.source.e_primary.length > 1) {
698 guObserve.source.e_primary = [];
699 guObserve.source.e_primary.push(uId);
701 $(
"#guUserGrid input[type=checkbox]").each(
function() {
702 $(
this).prop(
"checked",
false);
706 if (guObserve.source.e_primary.length > 1) {
707 $(box).prop(
"checked",
true);
708 }
else if (boxValue) {
709 $(box).prop(
"checked", boxValue);
711 $(box).prop(
"checked", !boxValue);
715 if (guObserve.source.e_dirty &&
716 guObserve.source.e_primary.length == 1) {
717 guNotifyPrimary.open();
721 var EventUpdateUsers =
function() {
723 var source = guObserve.source;
725 if (!ValidateUsers()) {
727 if (source.e_dirty) {
728 groupData.uPrimary = {
729 uMpl: source.o_primary.length > 1,
730 uNew: source.e_primary,
731 uOld: source.o_primary.filter(
function(e) {
732 return source.e_primary.indexOf(e) < 0;
738 operation:
"groupUpdatePrimary",
740 gPrimary: JSON.stringify(groupData)
743 guDataSource.transport.options.read.type =
"POST";
744 guDataSource.read(groupRequest);
748 var EventOpenWindow =
function(e) {
749 var windowElement = this.element[0];
750 var windowId = windowElement.id;
756 guCardWindows.push(
this);
759 var EventCloseWindow =
function(e) {
760 var windowElement = this.element[0];
761 var windowId = windowElement.id;
764 case "discardConfirm":
765 EventPopWindow(windowId);
767 var sourceUsers = guObserve.source;
770 sourceUsers.e_primary = sourceUsers.o_primary;
775 case "notifyRefresh":
776 EventPopWindow(windowId);
779 operation:
"groupCleanUser",
781 gRefresh: JSON.stringify({uId: guObserve.refreshUser.u_id})
784 guDataSource.transport.options.read.type =
"POST";
785 guDataSource.read(groupRequest);
788 if (windowId ==
"guUsers") {
789 if (!ValidateUsers()) {
793 EventPopWindow(windowId);
795 $.homecuValidator.setup({
796 formStatusField:
"formStatus",
797 formValidate:
"cardContainerDiv" 801 EventPopWindow(windowId);
809 var EventPopWindow =
function(windowId) {
811 for (var i = 0; i < guCardWindows.length; i++) {
812 var openWindow = guCardWindows[i].element[0];
813 var openId = openWindow.id;
815 if (openId == windowId) {
822 guCardWindows.splice(popIndex, 1);
826 var InitDataSources =
function() {
827 guDataSource =
new kendo.data.DataSource({
832 contentType:
"application/x-www-form-urlencoded",
840 requestStart:
function(request) {
843 requestEnd:
function(response) {
844 setTimeout(hideWaitWindow, 500);
845 if (response.hasOwnProperty(
"response")) {
846 if (response.response.hasOwnProperty(
"Results")) {
847 var results = response.response.Results;
849 if (results.hasOwnProperty(
"error")) {
850 $.homecuValidator.homecuResetMessage =
true;
851 $.homecuValidator.displayMessage(results.error, $.homecuValidator.settings.statusError);
852 }
else if (results.hasOwnProperty(
"info")) {
853 $.homecuValidator.homecuResetMessage =
true;
854 $.homecuValidator.displayMessage(results.info, $.homecuValidator.settings.statusSuccess);
857 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
860 $.homecuValidator.displayMessage(
"Error Parsing Server", $.homecuValidator.settings.statusError);
864 parse:
function(response) {
867 var resultData =
null;
868 var resultOperation =
null;
870 if (response.hasOwnProperty(
"Results")) {
871 results = response.Results;
872 resultData = results.data;
873 resultOperation = results.operation;
876 if (results.hasOwnProperty(
"errors")) {
880 if (resultData == undefined || resultData ==
null) {
884 setTimeout(
function() {
885 switch (resultOperation) {
886 case "groupReadUsers":
887 DataBuildUsers(resultData.users);
888 var
template= kendo.template($(
"#titleTemplate").html());
889 guGroup.cardTitle=
"Group Users";
890 guUsers.title(
template(guGroup)).center().open();
892 case "groupCleanUser":
893 DataBuildUsers(resultData.users);
895 case "groupUpdatePrimary":
896 DataBuildUsers(resultData.users);
898 guPayload = resultData.encrypt;
899 guGroup = resultData.group.group;
900 guCall(
"updateGroupInfo", resultData.group);
901 guCall(
"updateGroupEncrypt", resultData.encrypt);
904 guObserve.source.o_primary = guObserve.source.e_primary;
916 var InitDataViews =
function() {
917 guUsers = $(
"#guUsers").kendoWindow({
918 title:
"Group Users",
925 activate: EventOpenWindow,
926 close: EventCloseWindow,
928 this.wrapper.css({ top: 100 });
930 }).data(
"kendoWindow");
932 guObserve =
new kendo.observable({
934 showPrimaryWarning:
false,
935 showAccessWarning:
false,
939 $(
'#guUserGrid input[type=checkbox]').off();
940 $(
'#guUserGrid input[type=checkbox]').css(
"cursor",
"pointer");
941 $(
'#guUserGrid input[type=checkbox]').change(
function(e) {
942 EventCheckboxChange(e.target);
945 $(
"#guUserGrid tr").each(
function(i) {
948 var rowItem = $(
"#guUserGrid").data(
"kendoGrid").dataItem(row);
951 if (rowItem.u_primary) {
952 row.find(
"input[type=checkbox]").prop(
"checked",
true);
958 if (!rowItem.u_primary) {
959 if ((guObserve.source.o_primary.length > 1 || rowItem.o_count > 0)) {
960 row.addClass(
"cleanup");
961 row.find(
"td:eq(1)").css(
"cursor",
"not-allowed"); <?php
962 row.find(
"input[type=checkbox]").prop(
"disabled",
true);
963 row.find(
"input[type=checkbox]").css(
"cursor",
"not-allowed");
964 row.find(
"button").on(
"click",
function(e) {
967 if (guObserve.source.e_primary.length > 1) {
968 guNotifyRefreshFail.open();
970 guObserve.set(
"refreshUser", rowItem);
971 guNotifyRefresh.open();
980 var grid = $(
"#guUserGrid").data(
"kendoGrid");
981 var row = grid.select();
983 var box = row.find(
"input[type=checkbox]");
984 $(box).trigger(
"click");
986 row.removeClass(
"k-state-selected");
990 kendo.bind(
"#guUsers", guObserve);
992 guDiscard = $(
"#guDiscard").kendoDialog({
993 title:
"Discard Changes",
994 content:
"<div class='col-sm-12'>" 995 +
"<p>This group's information has been changed.</p>" 996 +
"<p>Do you wish to discard the changes?</p>" 1003 show: EventOpenWindow,
1004 close: EventCloseWindow,
1007 action:
function() { guAction =
"discardDeny"; }
1009 { text:
"Yes", primary:
true,
1010 action:
function() { guAction =
"discardConfirm"; }
1013 }).data(
"kendoDialog");
1015 guNotifyPrimary = $(
"#guNotifyPrimary").kendoDialog({
1016 title:
"Primary User",
1017 content:
"<div class='col-sm-12'>" 1018 +
"<p>By changing the primary user, the selected user will take on the rights and access of the current primary user.</p>" 1019 +
"<p>This action cannot be undone except by changing the rights per sub-account.</p>" 1026 show: EventOpenWindow,
1027 close: EventCloseWindow,
1029 { text:
"Ok", primary:
true,
1030 action:
function() { guAction =
"notifyPrimary"; }
1033 }).data(
"kendoDialog");
1035 guNotifyRefreshFail = $(
"#guNotifyRefreshFail").kendoDialog({
1036 title:
"Reset Account Access",
1037 content:
"<div class='col-sm-12'>" 1038 +
"<p>This user's sub-account access cannot be reset because there are multiple primary owners for this group.</p>" 1039 +
"<p>Please update the group by selecting a single primary owner before trying to reset this user's sub-account access.</p>" 1046 show: EventOpenWindow,
1047 close: EventCloseWindow,
1049 { text:
"Ok", primary:
true,
1050 action:
function() { guAction =
"notifyRefreshFail"; }
1053 }).data(
"kendoDialog");
1055 guNotifyRefresh = $(
"#guNotifyRefresh").kendoDialog({
1056 title:
"Reset Account Access",
1057 content:
'<div class="col-sm-12">' 1058 +
'<p>By cropping this user\'s sub-account access, you will be removing access to the sub-accounts which the current primary user does not access.</p>' 1059 +
'<p>Other sub-accounts which the primary owner also has access to will remain for this user.</p>' 1066 show: EventOpenWindow,
1067 close: EventCloseWindow,
1069 { text:
"Ok", primary:
true,
1070 action:
function() { guAction =
"notifyRefresh"; }
1073 }).data(
"kendoDialog");
1075 guStatus = $(
"#guStatus");
1078 guTooltip = homecuTooltip.defaults;
1079 guTooltip.filter =
".cleanup td:eq(1)"; <?php
1080 guTooltip.content = EventShowTip,
1081 $(
"#guUsers").kendoTooltip(guTooltip);
1084 var InitDataActions =
function() {
1085 $(
"#btnUpdate").on(
"click",
function() {
1088 $(
"#lnkCancel").on(
"click",
function() {
1093 this.Open =
function(windowStack) {
1095 $.homecuValidator.setup({
1096 formStatusField:
"status",
1097 formValidate:
"guUsers" 1100 guCardWindows = windowStack;
1101 var groupRequest = {
1102 operation:
"groupReadUsers",
1106 guDataSource.transport.options.read.type =
"POST";
1107 guDataSource.read(groupRequest);
1110 this.Close =
function() {
1114 this.Data =
function(payload, group) {
1115 guPayload = payload;
1119 this.Init =
function(hubCall, cardContainer) {
1121 guCardContainer = cardContainer;
1127 guCall(
"GroupUsers",
this);