Exemple #1
0
        public async Task <IActionResult> GetUsersWithRoles(ForTableModel model)
        {
            var propInfo = GetPropertyInfo(model.SortColumn);

            var nn = User.Identity.Name;

            var usersList = _userManager.Users.Where(u => u.UserName != User.Identity.Name);

            if (model.SearchTerm != null)
            {
                usersList = usersList.Where(u => u.UserName.Contains(model.SearchTerm));
            }

            switch (model.SortDirection)
            {
            case "asc":
                usersList = propInfo != null?
                            usersList.OrderBy(u => propInfo.GetValue(u)) : usersList.OrderBy(u => u.Id);

                break;

            case "desc":
                usersList = propInfo != null?
                            usersList.OrderByDescending(u => propInfo.GetValue(u)) : usersList.OrderByDescending(u => u.Id);

                break;

            default:
                usersList = propInfo == null ?
                            usersList : usersList.OrderBy(u => propInfo.GetValue(u));
                break;
            }
            var users = await usersList
                        .Skip((model.Page - 1) *model.PageSize)
                        .Take(model.PageSize)
                        .ToListAsync();

            var total = await usersList.CountAsync();

            List <UserViewModel> userDTOs = new List <UserViewModel>();

            IList <string> roles;

            foreach (var item in users)
            {
                roles = await _userManager.GetRolesAsync(item);

                userDTOs.Add(new UserViewModel
                {
                    Id       = item.Id,
                    UserName = item.UserName,
                    Roles    = roles
                });
            }

            return(Ok(new
            {
                entities = userDTOs,
                total
            }));
        }
        public async Task <IActionResult> Get(ForTableModel model)
        {
            if (!(await _context.Books.AnyAsync() && await _context.Authors.AnyAsync()))
            {
                return(Ok(new
                {
                    entities = new List <BookViewModel>(),
                    total = 0
                }));
            }

            var propInfo = GetPropertyInfo(model.SortColumn);

            var bookList = User.IsInRole("Moderator") || User.IsInRole("Admin") ?
                           _context.Books : _context.Books.Where(b => b.IsVisibleInCatalog);

            if (model.SearchTerm != null)
            {
                bookList = bookList
                           .Where(b => b.Name.ToLower().Contains(model.SearchTerm) ||
                                  b.Author.Name.ToLower().Contains(model.SearchTerm));
            }

            switch (model.SortDirection)
            {
            case "asc":
                bookList = propInfo != null?
                           bookList.OrderBy(b => propInfo.GetValue(b)) : bookList.OrderBy(b => b.Id);

                break;

            case "desc":
                bookList = propInfo != null?
                           bookList.OrderByDescending(b => propInfo.GetValue(b)) :
                               bookList.OrderByDescending(b => b.Id);

                break;

            default:
                bookList = propInfo == null ?
                           bookList : bookList.OrderBy(b => propInfo.GetValue(b));
                break;
            }
            var books = await bookList
                        .Include(b => b.Author)
                        .Skip((model.Page - 1) * model.PageSize)
                        .Take(model.PageSize)
                        .ToListAsync();

            var total = await bookList.CountAsync();

            List <BookForAdminViewModel> bookViews = new List <BookForAdminViewModel>();

            foreach (var item in books)
            {
                bookViews.Add(_mapper.Map <BookForAdminViewModel>(item));
            }

            return(Ok(new
            {
                entities = bookViews,
                total
            }));
        }