public GridViewModel GetSearchResult(SearchRequest request, string userName, bool isPharmixAdmin) { var user = _userManager.FindByNameAsync(userName).Result; var isTrustAdmin = user != null && _userManager.IsInRoleAsync(user, _trustAdminRole).Result; UpdateUserTempIdCache(); var model = UserMapper.CreateGridViewModel(); List <UserViewModel> users = new List <UserViewModel>(); //bool isPharmixAdmin = IsPharmixAdmin(userName); if (isPharmixAdmin) { List <string> trustAdminRoles = new List <string>() { _trustAdminRole }; users = GetUsersByRoles(trustAdminRoles).Result.MapToViewModelList(); } else { //Trust Admin List <string> rolesToExclude = new List <string>(); rolesToExclude.Add(PharmixStaticHelper.SuperAdminRoleName); rolesToExclude.Add("Admin"); rolesToExclude = _userManager.GetRolesAsync(user).Result.ToList(); users = (from u in _context.Users join ur in _context.UserRoles on u.Id equals ur.UserId into urdef from ur in urdef.DefaultIfEmpty() join r in _context.Roles on ur.RoleId equals r.Id into rdef from r in rdef.DefaultIfEmpty() where r == null || !rolesToExclude.Contains(r.Name) //Donot allow change same level of users select new UserViewModel { Id = u.Id, Name = u.UserName, Email = u.Email, FirstName = u.FirstName, SurName = u.Surname, MobileNumber = u.MobileNumber }).ToList(); } users = UpdateTempID(users.ToList()); var pageResult = QueryListHelper.SortViewModelResults(users, request); var serviceRows = pageResult .Where(p => string.IsNullOrEmpty(request.SearchText) || p.Email.StartsWith(request.SearchText, StringComparison.CurrentCultureIgnoreCase)) .Select(x => UserMapper.BindGridData(x, isTrustAdmin)); model.Rows = serviceRows.ToPagedList(request.Page ?? 1, request.PageSize); return(model); }