public override Task <UsersReply> GetUsers(UsersRequest request, ServerCallContext context)
        {
            IEnumerable <User> users = Enumerable.Range(1, 20).Select(
                x => new User {
                Id = x, Name = $"Name {x} from {request.DepartmentName}"
            });
            UsersReply response = new UsersReply();

            response.ListOfUsers.AddRange(users);
            return(Task.FromResult(response));
        }
示例#2
0
        public override async Task <UsersReply> GetAll(GetAllRequest request, ServerCallContext context)
        {
            var reply = new UsersReply();
            var user  = await _userService.GetUser(context.GetHttpContext());

            if (user == null)
            {
                reply.Error = Error.NeedLogin;
                return(reply);
            }

            if (!user.HasWritePermission())
            {
                reply.Error = Error.NoPermission;
                return(reply);
            }

            var users = _service.All();

            if (!string.IsNullOrWhiteSpace(request.Filter))
            {
                users = users.Where(u => u.Id.Contains(request.Filter, StringComparison.CurrentCultureIgnoreCase));
            }

            users = users.OrderByDescending(u => u.Status).ThenBy(u => u.Id);
            if (request.Skip > 0 || request.Take > 0)
            {
                reply.Total = await users.CountAsync();
            }

            if (request.Skip > 0)
            {
                users = users.Skip(request.Skip);
            }

            if (request.Take > 0)
            {
                users = users.Take(request.Take);
            }

            reply.Users.AddRange(await users
                                 .Select(Selector)
                                 .ToArrayAsync());
            return(reply);
        }
示例#3
0
 public static TaskAwaiter <UsersReply> GetAwaiter(this UsersReply usersReply) =>
 Task.Run(() => usersReply).GetAwaiter();