Advertisement
Guest User

Untitled

a guest
Sep 7th, 2017
558
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.37 KB | None | 0 0
  1. cshtml View:
  2.  
  3.  
  4. @model ...UserManagementViewModel
  5. @using ...BackOfficeSite
  6. @using Kendo.Mvc.UI
  7. @{
  8. ViewBag.Title = Resources.User.UserManagement;
  9. Layout = "~/Views/Shared/_LayoutBO.cshtml";
  10. }
  11.  
  12. @using BayView.Ashram.Presentation.BackOfficeSite.Models
  13.  
  14.  
  15. @section scripts
  16. {
  17. <script type="text/javascript" src="@Links.Scripts.ThirdParty.kendo_aspnetmvc_min_js"></script>
  18. <script type="text/javascript" src="@Links.Scripts.ashram_bo_kendogrid_js"></script>
  19. <script type="text/javascript" src="@Links.Scripts.ashram_bo_userManagement_js"></script>
  20.  
  21. <script type="text/javascript">
  22. ashram.bo.kendogrid.ActionHeaderTitle = '@Resources.User.tbl_Actions';
  23.  
  24. ashram.bo.userManagement.urls = {
  25. editUserUrl: '@Url.Action("UserInfo", "User")',
  26. deactivateUserUrl: '@Url.Action("DeactivateUser", "User")',
  27. activateUserUrl: '@Url.Action("ActivateUser", "User")',
  28. eventLogUrl: '@Url.Action("EventLog", "User")',
  29. unlockUserUrl: '@Url.Action("UnlockUser", "User")',
  30. closeUserUrl: '@Url.Action("CloseUser", "User")'
  31. };
  32.  
  33. ashram.bo.userManagement.messages = {
  34. editUser: '@Resources.User.EditUser',
  35. deactivateUser: '@Resources.User.DeactivateUser',
  36. deactivateUserConfirm: '@Resources.User.DeactivateUserConfirm',
  37. activateUser: '@Resources.User.ActivateUser',
  38. activateUserConfirm: '@Resources.User.ActivateUserConfirm',
  39. unlockUser: '@Resources.User.UnlockUser',
  40. unlockUserConfirm: '@Resources.User.UnlockUserConfirm',
  41. closeUser: '@Resources.User.CloseUser',
  42. closeUserConfirm: '@Resources.User.CloseUserConfirm',
  43. userManagement: '@Resources.User.UserManagement',
  44. success: "@Resources.Common.Success",
  45. eventLog: "@Resources.User.EventLog",
  46. resetPassword: "@Resources.User.ResetPassword",
  47. resetPasswordConfirm: "@Resources.User.ResetPasswordConfirm",
  48. passwordResetSucceed: "@Resources.User.PasswordResetSucceed",
  49. passwordResetFail: "@Resources.User.PasswordResetFail"
  50. };
  51.  
  52. ashram.bo.userManagement.globals = {
  53. defaultDropDownOption: '@Resources.Common.Criteria_DropDown_DefaultOption',
  54. statusActive: '@Resources.User.StatusActive',
  55. statusInactive: '@Resources.User.StatusInactive',
  56. statusClosed: '@Resources.User.StatusClosed',
  57. yesLabel: '@Resources.Common.Yes_Label',
  58. noLabel: '@Resources.Common.No_Label'
  59. };
  60.  
  61. ashram.bo.up = {
  62. view: '@Model.Permissions.UserAccount.Access',
  63. edit: '@Model.Permissions.UserAccount.Modify',
  64. create: '@Model.Permissions.UserAccount.Create',
  65. chngPass: '@Model.Permissions.UserAccount.ChangeMyPassword',
  66. resetPass: '@Model.Permissions.UserAccount.ResetPassword'
  67. };
  68. </script>
  69. }
  70.  
  71. <h3>@Resources.User.UserManagement</h3>
  72. @* TODO: uncomment when clarifications about users search provided *@
  73. <div id="usersSearchCriteria">
  74. <div id="users_criteria_div" class="form-inline hide-content">
  75. <div class="fields_row first">
  76.  
  77. <div class="field_col first">
  78. <label>User Name:</label>
  79. @Html.DropDownManagementFilters("UserName_","selectpicker")
  80. <input type="text" id="txtUserName">
  81. </div>
  82.  
  83. <div class="field_col second">
  84. <label>Email:</label>
  85. @Html.DropDownManagementFilters("Email_","selectpicker")
  86. <input type="text" id="txtEmail">
  87. </div>
  88.  
  89. <div class="field_col third">
  90. <label>Status:</label>
  91. @Html.DropDownUserStatuses("UserStatusID", null, HtmlHelper.AnonymousObjectToHtmlAttributes(new { @class = "selectpicker" }), Resources.Common.Criteria_DropDown_DefaultOption)
  92. </div>
  93. </div>
  94.  
  95. <div class="fields_row second">
  96. <div class="field_col first">
  97. <label>First Name:</label>
  98. @Html.DropDownManagementFilters("FirstName_","selectpicker")
  99. <input type="text" id="txtFirstName">
  100. </div>
  101.  
  102. <div class="field_col second">
  103. <label>Last Name:</label>
  104. @Html.DropDownManagementFilters("LastName_","selectpicker")
  105. <input type="text" id="txtLastName">
  106. </div>
  107.  
  108. <div class="field_col third">
  109. <label>Is Locked:</label>
  110. @Html.DropDownYesNo("IsLockedUser", Resources.Common.Criteria_DropDown_DefaultOption, string.Empty)
  111. </div>
  112. </div>
  113.  
  114. <div class="fields_row third">
  115. <div class="field_col first">
  116. <label>Role:</label>
  117. @Html.DropDownRoles(Resources.Common.Criteria_DropDown_DefaultOption, string.Empty, Model.RolesSelectList)
  118. </div>
  119. </div>
  120.  
  121. <div class="fields_row fourth">
  122. <input id="btnSearch" type="submit" class="action btn btn-primary" value="@Resources.Role.Search">
  123. </div>
  124. </div>
  125. <a href="#" class="hide-head"></a>
  126. </div>
  127.  
  128. <div id="bulkGrid">
  129.  
  130. @(Html.Kendo().Grid<UserSearchResultModel>()
  131. .Name("grid")
  132.  
  133. .Columns(columns =>
  134. {
  135. columns.Bound(p => p.UserName).Title(Resources.User.tbl_UserName);
  136. columns.Bound(p => p.EmailAddress).Title(Resources.User.tbl_EmailAddress);
  137. columns.Bound(p => p.FirstName).Title(Resources.User.tbl_FirstName);
  138. columns.Bound(p => p.LastName).Title(Resources.User.tbl_LastName);
  139. columns.Bound(p => p.Role).Title(Resources.User.tbl_Role);
  140. columns.Bound(p => p.CreatedDate).Title(Resources.User.tbl_DateCreated);
  141. columns.Bound(p => p.ModifiedDate).Title(Resources.User.tbl_DateModified).HtmlAttributes(new { @class = "tdDateModified" });
  142. columns.Bound(p => p.ModifiedBy).Title(Resources.User.tbl_ModifiedBy).HtmlAttributes(new { @class = "tdModifiedBy" });
  143. columns.Bound(p => p.Status).Title(Resources.User.tbl_Status).HtmlAttributes(new { @class = "tdStatus" });
  144. columns.Bound(p => p.IsLockedStr).Title(Resources.User.tbl_IsLocked).HtmlAttributes(new { @class = "tdIsLocked" });
  145. columns.Template(p => p)
  146. .ClientTemplate("<div class='user_Action_Wraper' data-id='#=UserId#' data-status='#=Status#' data-locked='#=IsLockedStr#'></div>")
  147. .Title((Resources.User.tbl_Actions));
  148.  
  149. })
  150. .Pageable(pager => pager.PageSizes(WebConfigValues.GridItemsPerPage).ButtonCount(5).Input(true))
  151. .Sortable()
  152. .Events(events => events.DataBound(@<text>
  153. function () {
  154. ashram.bo.userManagement.populateIcons.apply(this, arguments);
  155. ashram.bo.utils.applyGridScrollToTopBehavior.apply(this, arguments);
  156. }
  157. </text>
  158. ))
  159. .DataSource(dataSource => dataSource
  160. .Ajax()
  161. .ServerOperation(false)
  162. .Model(model => model.Id(p => p.UserId))
  163. .Read(read => read.Action("UsersRead", "User"))
  164. )
  165. )
  166. </div>
  167.  
  168.  
  169.  
  170. js file:
  171.  
  172. ashram.bo.userManagement = {
  173.  
  174. init: function () {
  175. $('#btnSearch').click(ashram.bo.userManagement.searchData);
  176. $("#RoleID").select2();
  177. $("#RoleID").select2("val", "");
  178. },
  179.  
  180. //Deactivate user section
  181. deactivateUser: function (userId) {
  182. ashram.bo.window.confirm('',
  183. ashram.bo.userManagement.messages.deactivateUser,
  184. ashram.bo.userManagement.messages.deactivateUserConfirm,
  185. function (confirm) {
  186. if (confirm) {
  187. onConfirmDeactivateUser(userId);
  188. }
  189. });
  190.  
  191. onConfirmDeactivateUser = function (userId) {
  192. ashram.bo.utils.loader(true);
  193.  
  194. var data = {
  195. userId: userId
  196. };
  197. ashram.bo.proxy.deactivateUser(data, onSuccessDeactivateUserCallback, ashram.bo.userManagement.onFailureCallback);
  198. };
  199.  
  200. onSuccessDeactivateUserCallback = function (response) {
  201. ashram.bo.utils.loader(false);
  202.  
  203. var tr = $("#trUser" + response.Content.UserId);
  204.  
  205. ashram.bo.userManagement.updateGridRowStatus(response, tr);
  206.  
  207. tr.find(".action_deactivate_user").hide();
  208. tr.find(".action_activate_user").show();
  209.  
  210. ashram.bo.userManagement.showSuccessMessage(response);
  211. };
  212.  
  213. },
  214.  
  215. //Activate user section
  216. activateUser: function (userId) {
  217. ashram.bo.window.confirm('',
  218. ashram.bo.userManagement.messages.activateUser,
  219. ashram.bo.userManagement.messages.activateUserConfirm,
  220. function (confirm) {
  221. if (confirm) {
  222. onConfirmActivateUser(userId);
  223. }
  224. });
  225.  
  226. onConfirmActivateUser = function (userId) {
  227. ashram.bo.utils.loader(true);
  228.  
  229. var data = {
  230. userId: userId
  231. };
  232. ashram.bo.proxy.activateUser(data, onSuccessActivateUserCallback, ashram.bo.userManagement.onFailureCallback);
  233. };
  234.  
  235. onSuccessActivateUserCallback = function (response) {
  236. ashram.bo.utils.loader(false);
  237.  
  238. var tr = $("#trUser" + response.Content.UserId);
  239.  
  240. ashram.bo.userManagement.updateGridRowStatus(response, tr);
  241.  
  242. tr.find(".action_deactivate_user").show();
  243. tr.find(".action_activate_user").hide();
  244.  
  245. ashram.bo.userManagement.showSuccessMessage(response);
  246. };
  247. },
  248.  
  249. //Unlock user section
  250. unlockUser: function (userId) {
  251. ashram.bo.window.confirm('',
  252. ashram.bo.userManagement.messages.unlockUser,
  253. ashram.bo.userManagement.messages.unlockUserConfirm,
  254. function (confirm) {
  255. if (confirm) {
  256. onConfirmUnlockUser(userId);
  257. }
  258. });
  259.  
  260. onConfirmUnlockUser = function (userId) {
  261. ashram.bo.utils.loader(true);
  262.  
  263. var data = {
  264. userId: userId
  265. };
  266. ashram.bo.proxy.unlockUser(data, onSuccessUnlockUserCallback, ashram.bo.userManagement.onFailureCallback);
  267. };
  268.  
  269. onSuccessUnlockUserCallback = function (response) {
  270. ashram.bo.utils.loader(false);
  271.  
  272. var tr = $("#trUser" + response.Content.UserId);
  273.  
  274. ashram.bo.userManagement.updateGridRowIsLocked(response, tr);
  275.  
  276. tr.find(".action_unlock_user").hide();
  277.  
  278. ashram.bo.userManagement.showSuccessMessage(response);
  279. };
  280.  
  281. },
  282.  
  283. //reset Password section
  284. resetPassword: function (userId) {
  285. ashram.bo.window.confirm('',
  286. ashram.bo.userManagement.messages.resetPassword,
  287. ashram.bo.userManagement.messages.resetPasswordConfirm,
  288. function (confirm) {
  289. if (confirm) {
  290. onConfirmResetPassword(userId);
  291. }
  292. });
  293.  
  294. onConfirmResetPassword = function (userId) {
  295. ashram.bo.utils.loader(true);
  296.  
  297. var data = {
  298. userId: userId
  299. };
  300. ashram.bo.proxy.resetPassword(data, onSuccessResetPasswordCallback, onFailureResetPasswordCallback);
  301. };
  302.  
  303. onSuccessResetPasswordCallback = function (response) {
  304. ashram.bo.utils.loader(false);
  305. ashram.bo.window.info('', ashram.bo.userManagement.messages.success, ashram.bo.userManagement.messages.passwordResetSucceed);
  306.  
  307. var tr = $("#trUser" + response.Content.UserId);
  308. tr.find("td.tdDateModified").html(response.Content.ModifiedDate);
  309. tr.find("td.tdModifiedBy").html(response.Content.ModifiedBy);
  310. };
  311.  
  312. onFailureResetPasswordCallback = function (response) {
  313. ashram.bo.utils.loader(false);
  314.  
  315. ashram.bo.window.error('', ashram.bo.messages.popUpErrorTitle, ashram.bo.userManagement.messages.passwordResetFail);
  316. };
  317. },
  318.  
  319. onFailureCallback: function (response) {
  320. ashram.bo.utils.loader(false);
  321.  
  322. var message = response.Content && response.Content.Message
  323. ? response.Content.Message
  324. : ashram.bo.messages.technicalError;
  325.  
  326. ashram.bo.window.error('', ashram.bo.messages.popUpErrorTitle, message);
  327. },
  328.  
  329. updateGridRowStatus: function (response, tr) {
  330. var uid = tr.data("uid");
  331.  
  332. tr.find("td.tdStatus").html(response.Content.Status);
  333. tr.find("td.tdDateModified").html(response.Content.ModifiedDate);
  334. tr.find("td.tdModifiedBy").html(response.Content.ModifiedBy);
  335.  
  336. var dataRow = $('#grid').data("kendoGrid").dataSource.getByUid(uid)
  337. dataRow.Status = response.Content.Status;
  338. },
  339.  
  340. updateGridRowIsLocked: function (response, tr) {
  341. var uid = tr.data("uid");
  342.  
  343. tr.find("td.tdIsLocked").html(response.Content.IsLockedStr);
  344. tr.find("td.tdDateModified").html(response.Content.ModifiedDate);
  345. tr.find("td.tdModifiedBy").html(response.Content.ModifiedBy);
  346.  
  347. var dataRow = $('#grid').data("kendoGrid").dataSource.getByUid(uid)
  348. dataRow.IsLockedStr = response.Content.IsLockedStr;
  349. },
  350.  
  351. showSuccessMessage: function (response) {
  352. var message = response.Content && response.Content.Message
  353. ? response.Content.Message
  354. : ashram.bo.userManagement.messages.success;
  355. ashram.bo.window.info('', ashram.bo.userManagement.messages.success, message);
  356. },
  357.  
  358.  
  359. searchData: function () {
  360. var filter = new Array();
  361.  
  362. var userNameCmp = ashram.bo.kendogrid.getKendoCmpByManagementFilterValue($("#UserName_CompareBy").val());
  363. var userName = $("#txtUserName").val();
  364.  
  365. var emailCmp = ashram.bo.kendogrid.getKendoCmpByManagementFilterValue($("#Email_CompareBy").val());
  366. var email = $("#txtEmail").val();
  367.  
  368. var firstNameCmp = ashram.bo.kendogrid.getKendoCmpByManagementFilterValue($("#FirstName_CompareBy").val());
  369. var firstName = $("#txtFirstName").val();
  370.  
  371. var lastNameCmp = ashram.bo.kendogrid.getKendoCmpByManagementFilterValue($("#LastName_CompareBy").val());
  372. var lastName = $("#txtLastName").val();
  373.  
  374. if (userName && userName != "") {
  375. filter.push({ field: "UserName", operator: userNameCmp, value: userName });
  376. }
  377. if (email && email != "") {
  378. filter.push({ field: "EmailAddress", operator: emailCmp, value: email });
  379. }
  380. if (firstName && firstName != "") {
  381. filter.push({ field: "firstName", operator: firstNameCmp, value: firstName });
  382. }
  383. if (lastName && lastName != "") {
  384. filter.push({ field: "LastName", operator: lastNameCmp, value: lastName });
  385. }
  386.  
  387. var role = $("#RoleID option:selected").text();
  388. var status = $("#UserStatusID option:selected").text();
  389. var isLocked = $("#IsLockedUser option:selected").text();
  390.  
  391. if (role && role != ashram.bo.userManagement.globals.defaultDropDownOption) {
  392. filter.push({ field: "Role", operator: "eq", value: role });
  393. }
  394.  
  395. if (status && status != ashram.bo.userManagement.globals.defaultDropDownOption) {
  396. filter.push({ field: "Status", operator: "eq", value: status });
  397. }
  398.  
  399. if (isLocked && isLocked != ashram.bo.userManagement.globals.defaultDropDownOption) {
  400. filter.push({ field: "IsLockedStr", operator: "eq", value: isLocked });
  401. }
  402.  
  403. var grid = $("#grid").data("kendoGrid");
  404. grid.dataSource.filter(filter);
  405. },
  406.  
  407.  
  408.  
  409. populateIcons: function (e) {
  410. var upCheck = ashram.bo.up;
  411.  
  412. var wrappers = $(grid).find(".user_Action_Wraper");
  413.  
  414. for (var i = 0; i < wrappers.length; i++) {
  415. var userId = $(wrappers[i]).data("id");
  416. var status = $(wrappers[i]).data("status");
  417. var isLocked = $(wrappers[i]).data("locked");
  418.  
  419. $(wrappers[i]).parent().parent().attr("id", "trUser" + userId);
  420.  
  421.  
  422. $(wrappers[i]).append("<a href='javascript:ashram.bo.userManagement.deactivateUser(\"" + userId + "\")'" +
  423. " class='action_deactivate_user' title='" + ashram.bo.userManagement.messages.deactivateUser + "' >"
  424. + ashram.bo.userManagement.messages.deactivateUser + "</a> ");
  425.  
  426. $(wrappers[i]).append("<a href='javascript:ashram.bo.userManagement.activateUser(\"" + userId + "\")'" +
  427. " class='action_activate_user' title='" + ashram.bo.userManagement.messages.activateUser + "' >"
  428. + ashram.bo.userManagement.messages.activateUser + "</a> ");
  429.  
  430. if (upCheck.edit == "True") {
  431. $(wrappers[i]).append("<a href='" + ashram.bo.userManagement.urls.editUserUrl + "/" + userId + "'" +
  432. " class='action_edit_user' title='" + ashram.bo.userManagement.messages.editUser + "' >"
  433. + ashram.bo.userManagement.messages.editUser + "</a> ");
  434. }
  435.  
  436. $(wrappers[i]).append("<a href='javascript:ashram.bo.userManagement.unlockUser(\"" + userId + "\")'" +
  437. " class='action_unlock_user' title='" + ashram.bo.userManagement.messages.unlockUser + "' >"
  438. + ashram.bo.userManagement.messages.unlockUser + "</a> ");
  439.  
  440. if (upCheck.resetPass == "True") {
  441. $(wrappers[i]).append("<a href='javascript:ashram.bo.userManagement.resetPassword(\"" + userId + "\")'" +
  442. " class='action_reset_password' title='" + ashram.bo.userManagement.messages.resetPassword + "' >"
  443. + ashram.bo.userManagement.messages.resetPassword + "</a> ");
  444. }
  445.  
  446. $(wrappers[i]).append("<a href='" + ashram.bo.userManagement.urls.eventLogUrl + "/" + userId + "'" +
  447. " class='action_event_log' title='" + ashram.bo.userManagement.messages.eventLog + "' >"
  448. + ashram.bo.userManagement.messages.eventLog + "</a> ");
  449.  
  450. if (status == ashram.bo.userManagement.globals.statusActive) {
  451. $(wrappers[i]).find(".action_activate_user").hide();
  452. } else {
  453. $(wrappers[i]).find(".action_deactivate_user").hide();
  454. }
  455.  
  456. if (isLocked == ashram.bo.userManagement.globals.noLabel) {
  457. $(wrappers[i]).find(".action_unlock_user").hide();
  458. }
  459. }
  460. }
  461.  
  462. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement