public async Task <bool> ProcessAsync(TransactionDto[] transactions) { var userTransactionsTasks = new List <Task <bool> >(); var transactionsByUsers = transactions.GroupBy(x => x.UserId); foreach (var userTransactions in transactionsByUsers) { var(username, password) = await _credentialsCollector.GetUserCredentialsAsync(userTransactions.Key); var orders = userTransactions.Select(x => new OrderDto(x.TransactionId, x.OrderNumber)).ToArray(); var orderDetailsInteractor = _interactorFactory.CreateInteractor <IOrderDetailsInteractor>(); userTransactionsTasks.Add(orderDetailsInteractor.RunAsync(username, password, orders)); } await Task.WhenAll(userTransactionsTasks); return(false); }