public async Task <GetTransferRequestsResponse> Handle(GetTransferRequestsQuery message) { var transferRequests = await _employerCommitmentApi.GetTransferRequests(message.AccountHashedId); var accountIds = transferRequests .SelectMany(r => new[] { r.HashedSendingEmployerAccountId, r.HashedReceivingEmployerAccountId }) .Select(h => _hashingService.DecodeValue(h)) .ToList(); var accounts = await _db.Value.Accounts .Where(a => accountIds.Contains(a.Id)) .ProjectTo <AccountDto>(_configurationProvider) .ToDictionaryAsync(a => a.HashedId); var transferRequestsData = transferRequests .Select(r => new TransferRequestDto { CreatedDate = r.CreatedOn, ReceiverAccount = accounts[r.HashedReceivingEmployerAccountId], SenderAccount = accounts[r.HashedSendingEmployerAccountId], Status = r.Status, TransferCost = r.TransferCost, TransferRequestHashedId = r.HashedTransferRequestId }) .OrderBy(r => r.ReceiverAccount.Id == message.AccountId.Value ? r.SenderAccount.Name : r.ReceiverAccount.Name) .ThenBy(r => r.CreatedDate) .ToList(); return(new GetTransferRequestsResponse { TransferRequests = transferRequestsData }); }