public async Task <MenuItemSearchModel> GetMenuItems(MenuItemSearchModel model) { var url = CRMApiUri + "/MenuItem/GetMenuItems?" + GetFilterString(model); var result = await GetOdataResultFromApi(url); var searchResultCount = 0; if (result.Count != null) { int.TryParse(result.Count.ToString(), out searchResultCount); } model.TotalRows = searchResultCount; model.MenuItemSearchResult.Clear(); try { model.MenuItemSearchResult.AddRange(result.Items.Select(item => JsonConvert.DeserializeObject <MenuItemDto>(item.ToString()))); } catch (Exception e) { Console.WriteLine(e); throw; } return(model); }
public async Task <IActionResult> MenuItemGrid(MenuItemSearchModel model) { model = InitializeMenuItemModel(model, model.ApplicationId); var result = await _employeeFacadeApiClient.GetMenuItems(model); return(PartialView(result)); }
private RoleDto PopulatePermission(int applicationId, int roleId, List <int> fullaccessIds = null, List <int> readonlyaccessIds = null) { var searchApplicationRole = new ApplicationRoleSearchModel { ApplicationId = applicationId, RoleId = roleId, PageSize = int.MaxValue, SortColumn = "Id" }; searchApplicationRole = _employeeFacadeApiClient.GetApplicationRoles(searchApplicationRole).Result; var menuItemSearch = new MenuItemSearchModel { PageSize = int.MaxValue, SortColumn = "DisplayName", ApplicationId = applicationId }; menuItemSearch = _employeeFacadeApiClient.GetMenuItems(menuItemSearch).Result; var fullaccessPermissions = searchApplicationRole.ApplicationRoleSearchResult.SelectMany(a => a.RolePermissions.Where(x => x.AccessLevel == AccessLevel.Full).Select(r => r.MenuItemId)).ToList(); var readonlyPermissions = searchApplicationRole.ApplicationRoleSearchResult.SelectMany(a => a.RolePermissions.Where(x => x.AccessLevel == AccessLevel.Readonly).Select(r => r.MenuItemId)).ToList(); var menuItemsForAvailableForReadonly = menuItemSearch.MenuItemSearchResult.Where(x => !fullaccessPermissions.Contains(x.Id)).ToList(); if (fullaccessIds != null) { menuItemsForAvailableForReadonly = menuItemsForAvailableForReadonly.Where(x => !fullaccessIds.Contains(x.Id)).ToList(); fullaccessPermissions.AddRange(fullaccessIds); } var menuItemsForAvailableForFullaccess = menuItemSearch.MenuItemSearchResult.Where(x => !readonlyPermissions.Contains(x.Id)).ToList(); if (readonlyaccessIds != null) { menuItemsForAvailableForFullaccess = menuItemsForAvailableForFullaccess.Where(x => !readonlyaccessIds.Contains(x.Id)).ToList(); readonlyPermissions.AddRange(readonlyaccessIds); } var role = _employeeFacadeApiClient.GetRole(roleId).Result; role.ApplicationId = applicationId; role.Id = roleId; role.ReadonlyPermisssionSelectList = SelectedListHelper.GetPermissionSelectList(menuItemsForAvailableForReadonly, readonlyPermissions); role.FullAccessPermisssionSelectList = SelectedListHelper.GetPermissionSelectList(menuItemsForAvailableForFullaccess, fullaccessPermissions); role.LinkedReadonlyRolePermissionsIds = readonlyaccessIds?.Select(x => x.ToString()).ToList(); role.LinkedFullAccessRolePermissionsIds = fullaccessIds?.Select(x => x.ToString()).ToList(); return(role); }
private string GetFilterString(MenuItemSearchModel searchModel) { var filterString = string.Empty; if (searchModel != null) { if (searchModel.ApplicationId > 0) { filterString = ODataFilterConstant.Filter + $"ApplicationId eq {searchModel.ApplicationId}"; if (!string.IsNullOrWhiteSpace(searchModel.FilterText)) { if (!string.IsNullOrWhiteSpace(filterString)) { filterString += $" and (contains(ControllerName,'{searchModel.FilterText}') eq true"; filterString += $" or contains(DisplayName,'{searchModel.FilterText}') eq true )"; } } } AddPageSizeNumberAndSortingInFilterString(searchModel, ref filterString); } return(filterString); }
private MenuItemSearchModel InitializeMenuItemModel(MenuItemSearchModel model, int applicationId) { if (model == null) { model = new MenuItemSearchModel { SortColumn = "Id", SortDirection = "Desc", PageSize = 8, PageNumber = 1 }; } else { if (string.IsNullOrWhiteSpace(model.SortColumn)) { model.SortColumn = "Id"; model.SortDirection = "Desc"; } } model.ApplicationId = applicationId; model.TargetGridId = "ApplicationMenuItemGrid"; return(model); }
public async Task <MenuItemSearchModel> GetMenuItems(MenuItemSearchModel model) { return(await _menuItemApiClient.GetMenuItems(model)); }