コード例 #1
0
        public async Task<List<TransactionTableEntity>> GetTransactionsForInvoicing(int mvanumber, int dateVal, bool includeId = true)
        {
            List<TransactionTableEntity> list = new List<TransactionTableEntity>();

            var customers = new CustomerRepository().GetCustomersByMva(mvanumber).Where(x=>x.ActiveAccount);
            
            List<Task<IEnumerable<TransactionTableEntity>>> tasks = customers.Select(customer => GetTransactionsForCustomer(customer.InternalID.Value, dateVal, true)).ToList();

            if (tasks.Any())
                await Task.WhenAll(tasks);

            foreach (var task in tasks)
            {
                list.AddRange(task.Result.Where(r => (!r.NotInvoiceable.HasValue || !r.NotInvoiceable.Value) && (!r.OrderItemID.HasValue || !(r.OrderItemID.Value > 0)) ));
            }


            //var paralell = Parallel.ForEach(customers, async item =>
            //{
            //    var result = await GetTransactionsForCustomer(item.InternalID.Value, dateVal, true);
            //    list.AddRange(result.Where(r => !r.NotInvoiceable.HasValue || !r.NotInvoiceable.Value));
            //});
            //do
            //{

            //} while (!paralell.IsCompleted);

            return list;
        }