public async Task <IOperationCost> GetActivitiesForAccountAsync(long accountId)
        {
            var result = new GroupOperationCost($"GetActivitiesForAccountAsync({accountId})");

            await FetchAllMatchingActivities(activity => activity.AccountId == accountId, result);

            return(result);
        }
예제 #2
0
        public Task <GroupOperationCost> DoAsync(IStore store, CancellationToken cancellationToken)
        {
            List <Task>        taskList = new List <Task>();
            GroupOperationCost cost     = new GroupOperationCost("Save activity");

            foreach (var activity in _activities)
            {
                var task = store
                           .PersistActivityAsync(activity, cancellationToken)
                           .ContinueWith(t => cost.StepCosts.Add(t.Result), cancellationToken);

                taskList.Add(task);
            }

            return(Task.WhenAll(taskList).ContinueWith(t => cost, cancellationToken));
        }
예제 #3
0
        public Task <GroupOperationCost> DoAsync(IStore store, CancellationToken cancellationToken)
        {
            return(Task.Run(async() =>
            {
                var cost = new GroupOperationCost("Aggregate Activities");

                foreach (var accountId in NumberRange.ToInts(_config.AccountIds))
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        break;
                    }
                    var operationCost = await store.GetLatestActivitiesAsync(accountId);
                    cost.StepCosts.Add(operationCost);
                }

                return cost;
            }, cancellationToken));
        }
        private async Task FetchAllMatchingActivities(Expression <Func <Activity, bool> > selection, GroupOperationCost groupOperationCost)
        {
            CosmosClientQueryResult <Activity> page = null;

            do
            {
                page = await FetchPageOfActivities(selection, page?.ContinuationToken);

                groupOperationCost.StepCosts.Add(page.Cost);
            }while (page.ContinuationToken != null);
        }