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)); }
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); }
public static TaskAwaiter <UsersReply> GetAwaiter(this UsersReply usersReply) => Task.Run(() => usersReply).GetAwaiter();