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); } }
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)); }