async Task <PagedResult <UserWithRoles> > IUserService.GetUsersWithRoles(GetUsersQuery query) { Check.NotNull(query, name: "Query"); var currentPrincipal = await currentUserResolver.ResolveCurrentClaimsPrincipalAsync(); await authorizationService.AuthorizeResourceType(currentPrincipal, Operation.Read, typeof(UserWithRoles)); var users = userRepository.GetUsers(); if (query.ExcludeMe) { var currentUser = await currentUserResolver.ResolveAsync(); users = users.Where(u => u.Id != currentUser.Id); } var pagedResult = new PagedResult <UserWithRoles>(); if (!string.IsNullOrWhiteSpace(query.QueryString)) { try { var parseResult = await queryParser.ApplyQuery(users, query.QueryString); pagedResult.TotalCount = parseResult.TotalCount; users = parseResult.Results; } catch (Exception ex) { throw new ValidationException("Invalid query string", ex); } } if (string.IsNullOrWhiteSpace(query.OrderBy)) { users = users.OrderBy(u => u.Name); } if (query.Top > Constants.MaxPageSize) { users = users.Take(Constants.MaxPageSize); } var usersWithRoles = new List <UserWithRoles>(); foreach (var user in users) { usersWithRoles.Add(new UserWithRoles(user) { Roles = await userManager.GetRoles(user.Id) }); } pagedResult.Results = usersWithRoles.ToArray(); return(pagedResult); }
async Task ITimeEntryService.DeleteTimeEntry(DeleteTimeEntryCommand command) { var currentPrincipal = await currentUserResolver.ResolveCurrentClaimsPrincipalAsync(); await authorizationService.AuthorizeResourceType(currentPrincipal, Operation.Delete, typeof(TimeEntry)); Check.NotNull(command, errorMessage: "Command can not be null."); await validationService.Validate(command); var existingTimeEntry = await timeEntryRepository.GetTimeEntryById(command.TimeEntryId); if (existingTimeEntry == null) { return; } await authorizationService.AuthorizeResource(currentPrincipal, Operation.Delete, existingTimeEntry); await timeEntryRepository.DeleteTimeEntry(existingTimeEntry); }