Exemplo n.º 1
0
        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);
        }