public async Task <FindAccountProviderPaymentsResponse> Handle(FindAccountProviderPaymentsQuery message) { var validationResult = await _validator.ValidateAsync(message); if (!validationResult.IsValid()) { throw new InvalidRequestException(validationResult.ValidationDictionary); } if (validationResult.IsUnauthorized) { throw new UnauthorizedAccessException(); } var accountId = _hashingService.DecodeValue(message.HashedAccountId); var transactions = await _dasLevyService.GetAccountProviderPaymentsByDateRange <PaymentTransactionLine> (accountId, message.UkPrn, message.FromDate, message.ToDate); if (!transactions.Any()) { throw new NotFoundException("No transactions found."); } var firstTransaction = transactions.First(); return(new FindAccountProviderPaymentsResponse { ProviderName = firstTransaction.ProviderName, TransactionDate = firstTransaction.TransactionDate, DateCreated = firstTransaction.DateCreated, Transactions = transactions.ToList(), Total = transactions.Sum(c => c.LineAmount) }); }