public static async Task Run(
            [ServiceBusTrigger("datalockprocessor", Connection = "ServiceBusConnection")]
            string myQueueItem,
            [OrchestrationClient] DurableOrchestrationClient client,
            TraceWriter log)
        {
            try
            {
                log.Info("DataLockProcessor Starting");
                // DI
                var commitmentProvider = new CommitmentProvider();
                var accountProvider    = new AccountProvider();

                var earnings = JsonConvert.DeserializeObject <List <Earning> >(myQueueItem);

                var ukprn = earnings.Select(x => x.Ukprn).FirstOrDefault();

                var commitments = commitmentProvider.GetCommitments(ukprn, earnings).ToList();
                var accounts    = accountProvider.GetAccounts(commitments.Select(x => x.EmployerAccountId).Distinct().ToList());

                var input = new EarningsInput(ukprn, commitments, earnings, accounts);

                await client.StartNewAsync(nameof(EarningsOrchestrator), input);

                log.Info("DataLockProcessor Finishing");
            }
            catch (Exception e)
            {
                log.Error("Error sending learner info", e);
            }
        }
コード例 #2
0
        public static async Task Run([OrchestrationTrigger] DurableOrchestrationContext context)
        {
            var input = context.GetInput <EarningsInput>();

            var result = new List <LearnerOutput>();

            var earningsByLearner = input.Earnings.GroupBy(x => x.LearnerReferenceNumber).Select(x => x);

            try
            {
                foreach (var learner in earningsByLearner)
                {
                    var learnerCommitments = input.Commitments.Where(x => x.LearnerReferenceNumber == learner.Key).ToList();
                    var learnerAccounts    = input.Accounts.Where(l => learnerCommitments.Select(x => x.Id).Contains(l.Id)).ToList();
                    var earningInput       = new EarningsInput(input.Ukprn, learnerCommitments, learner.ToList(), learnerAccounts);
                    result.Add(await context.CallSubOrchestratorAsync <LearnerOutput>(nameof(EarningsOrchestrator), earningInput));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.WriteLine(JsonConvert.SerializeObject(result));
        }