/// <summary> /// Get the list of business applications and roles by each business applications /// </summary> /// <returns></returns> public static PaginatedList<PermissionGridModel> GetPermissionListByUser(ParameterSearchPermission parameters) { PaginatedList<PermissionGridModel> result = new PaginatedList<PermissionGridModel>(); List<PermissionGridModel> tempResult = new List<PermissionGridModel>(); PermissionGridModel itemGrid = null; string rolesObtaines = string.Empty; string prefix = "_"; int currentIndex = (parameters.SelectedPage - 1) * parameters.PageSize; List<Guid?> businessAppAdminLocal = null; using (VestalisEntities context = new VestalisEntities()) { string[] rolesForUser = Roles.GetRolesForUser(parameters.LoginName); if (!parameters.IsGlobalAdmin) businessAppAdminLocal = GetBusinessAppLocalAdminLogged(parameters.LoggedUserName,context).Select(data => data.BusinessApplicationId).Cast<Guid?>().ToList(); List<VestalisUserApplication> businessAppListByUser = null; if (parameters.IsGlobalAdmin) { businessAppListByUser = (from userApp in context.VestalisUserApplications.Include("BusinessApplication") where userApp.IsDeleted == false && userApp.UserName == parameters.LoginName select userApp).Distinct().ToList(); } else { businessAppListByUser = (from userApp in context.VestalisUserApplications.Include("BusinessApplication") where userApp.IsDeleted == false && userApp.UserName == parameters.LoginName && businessAppAdminLocal.Contains(userApp.BusinessApplicationId) select userApp).Distinct().ToList(); } if (businessAppListByUser != null) { foreach (var item in businessAppListByUser) { prefix += context.BusinessApplications.FirstOrDefault(data => data.BusinessApplicationId == item.BusinessApplicationId.Value).Prefix; var rolesByBusinessApp = (from role in context.aspnet_Roles where role.RoleName.Contains(prefix) select role.RoleName).ToList(); if (rolesByBusinessApp != null) { var finalRoles = rolesByBusinessApp.Where(data => rolesForUser.Contains(data)).ToList(); if (finalRoles.Count > 0) { if (rolesForUser.Contains("ApplicationAdministrator" + prefix)) { rolesObtaines += LanguageResource.ApplicationAdministrator; finalRoles.Remove("ApplicationAdministrator" + prefix); } foreach (var role in finalRoles) { rolesObtaines += ", " + role.Replace(prefix, ""); } if (rolesObtaines.First() == ',') { rolesObtaines = rolesObtaines.Remove(0, 2); } } else if (finalRoles.Count == 0 && rolesForUser.Count() > 0) { foreach (var role in rolesForUser) { if (role == "Client") { Guid? businessAppId = GetClientIdByBusinnessApplication(item.BusinessApplication.BusinessApplicationId, parameters.LoginName); string clientName = CatalogueBusiness.GetCatalogueValue(businessAppId.GetValueOrDefault()).CatalogueValueData; rolesObtaines += string.Format("{0} ({1})", role, clientName); } else rolesObtaines += role; } } itemGrid = new PermissionGridModel { BusinessApplication = item.BusinessApplication.BusinessApplicationName, BusinessApplictionId = item.BusinessApplication.BusinessApplicationId, Roles = rolesObtaines, }; tempResult.Add(itemGrid); rolesObtaines = string.Empty; prefix = "_"; } } } if (tempResult.Count > 0) { result.SortDirection = parameters.SortDirection; result.SortedColumn = parameters.SortedColumn; //order the result tempResult = (parameters.SortDirection == SortDirection.Ascending ? tempResult.OrderBy(ExtensionMethods.GetField<PermissionGridModel>(parameters.SortedColumn)) : tempResult.OrderByDescending(ExtensionMethods.GetField<PermissionGridModel>(parameters.SortedColumn))).ToList(); //set the paginated colletion if (!parameters.IsExport) result.Collection = tempResult.Skip(currentIndex).Take(parameters.PageSize).ToList(); else result.Collection = tempResult; //set the quantity of elements without pagination result.TotalCount = tempResult.Count; //set the number of pages result.NumberOfPages = (int)Math.Ceiling((double)result.TotalCount / (double)parameters.PageSize); //set the current page result.Page = parameters.SelectedPage; //set the page size result.PageSize = parameters.PageSize; } } return result; }
/// <summary> /// Search all permissions for the selected user /// </summary> public void SearchPermissionExcel(string userName, int userType) { Session.Add("userNameAccess", userName); Session.Add("userTypeAccess", userType); ParameterSearchPermission parameters = new ParameterSearchPermission() { PageSize = 0, SelectedPage = 0, SortedColumn = "BusinessApplication", SortDirection = SortDirection.Ascending, LoginName = userName, IsExport = true, IsGlobalAdmin = IsGlobalAdmin, LoggedUserName = UserName }; PaginatedList<PermissionGridModel> model = AuthorizationBusiness.GetPermissionListByUser(parameters); Session.Add("SearchPermissionExcel", model); }
/// <summary> /// Perform the search with pagination /// </summary> /// <param name="sortedColumn">Sorted column</param> /// <param name="page">Page</param> /// <param name="sortDirection">Sort direction</param> /// <returns>PartialViewResult</returns> public PartialViewResult SearchPermisssions(SortDirection? sortDirection, string sortedColumn, int? page) { UserModel userModel = Session["UserModel"] as UserModel; int pageSize = Cotecna.Vestalis.Web.Properties.Settings.Default.PageSize; if (string.IsNullOrEmpty(sortedColumn)) sortedColumn = "BusinessApplication"; if (page == null) page = 1; if (sortDirection == null) sortDirection = SortDirection.Ascending; ParameterSearchPermission parameters = new ParameterSearchPermission() { PageSize = pageSize, SelectedPage = page.GetValueOrDefault(), SortedColumn = sortedColumn, SortDirection = sortDirection.GetValueOrDefault(), LoginName = userModel.Email, IsGlobalAdmin = IsGlobalAdmin, LoggedUserName = UserName }; PaginatedList<PermissionGridModel> model = AuthorizationBusiness.GetPermissionListByUser(parameters); return PartialView("_PermissionGrid", model); }
/// <summary> /// Open the screen User in Edit modes /// </summary> /// <param name="userNameEdit">User for editing</param> /// <returns></returns> public ActionResult EditUser(string userNameEdit) { int userType = int.Parse(AuthorizationBusiness.GetUserParameter(userNameEdit, "UserType")); UserModel model = new UserModel(); model.UserTypes = UserTypes; model.OpenMode = (int)ScreenOpenMode.Edit; model.SelectedUserType = userType; MembershipUser user = Membership.GetUser(userNameEdit); model.Email = user.UserName; model.BusinessApplications = RetrieveBusinessApplications(); int pageSize = Cotecna.Vestalis.Web.Properties.Settings.Default.PageSize; ParameterSearchPermission parameters = new ParameterSearchPermission() { PageSize = pageSize, SelectedPage = 1, SortedColumn = "BusinessApplication", SortDirection = SortDirection.Ascending, LoginName = userNameEdit, IsGlobalAdmin = IsGlobalAdmin, LoggedUserName = UserName }; model.PermissionList = AuthorizationBusiness.GetPermissionListByUser(parameters); Session.Add("UserModel", model); return View("User", model); }