public async Task<Result<ListResult<AccountResponse>>> Handle(GetAllAccountsRequest request, CancellationToken cancellationToken) { try { var user = await _userRepository.GetUserByEmail(request.RequestEmail); if (user.Role.Name != "Admin" && !IsAccountAdmin(user.Id)) { return Result<ListResult<AccountResponse>>.AccessDenied("No access!"); } var result = await _accountRepository.GetList(request.PaginationEntry, request.Sorting, request.Filtering); if (user.Role.Name != "Admin") { var records = result.Records; var newRecords = records.ToList().Where(x => x.Admins.Select(x => x.UserId).Contains(user.Id)); result = new ListResult<Account>(newRecords, newRecords.Count()); } var response = CreateListResponse(result.Records.ToList()); return Result<ListResult<AccountResponse>>.Ok(response); } catch (Exception e) { return Result<ListResult<AccountResponse>>.Failure(e.Message); } }
public GetAllAccountsResponse GetAllAccounts(GetAllAccountsRequest request) { return new GetAllAccountsResponse { Accounts = this.documents .Query<AccountSummary, AccountSummaryIndex>() .AsProjection<AccountSummary>() .ToArray(), OpenAccountUri = this.links.Relative(RouteNames.OpenAccount) }; }