public static Task Run([ActivityTrigger] EarningValidation content) { var matchResult = content.MatchResult; var commitments = matchResult.Commitments; var earning = content.Earning; if (!earning.StandardCode.HasValue) { var commitmentsToMatch = commitments == null ? new List <Commitment>() : commitments.Where(c => c.PathwayCode.HasValue && earning.PathwayCode.HasValue && c.PathwayCode.Equals(earning.PathwayCode.Value)).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MismatchingPathway); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } } return(Task.FromResult(true)); }
public static async Task <LearnerOutput> Run([OrchestrationTrigger] DurableOrchestrationContext context, TraceWriter log) { try { log.Info("Earnings Orchestrator Starting"); var input = context.GetInput <EarningsInput>(); var output = new LearnerOutput(); var inputEarnings = input.Earnings; foreach (var earning in inputEarnings) { var learnerAccounts = input.Accounts.Where(l => input.Commitments.Select(x => x.EmployerAccountId).Contains(l.Id)).ToList(); var earningsInput = new EarningValidation(input.Ukprn, input.Commitments, learnerAccounts, earning); log.Info("Sending Request for Validation"); var result = await context.CallSubOrchestratorAsync <MatchResult>(nameof(SequentialValidation), earningsInput); //var result = await context.CallActivityAsync<MatchResult>(nameof(SequentialValidationActivity), earningsInput); if (result.Commitments != null && result.Commitments.Any()) { log.Info("Validation result retrieved"); var success = !result.ErrorCodes.Any(); foreach (var commitment in result.Commitments) { if (success) { log.Info("Payable earning added"); output.PayableEarnings.Add(new PayableEarning { Commitment = commitment, Earning = earning }); } else { log.Info("Non-Payable earning added"); output.NonPayableEarnings.Add(new NonPayableEarning { Earning = earning, Errors = result.ErrorCodes }); } } } } log.Info("Earnings Orchestrator Finishing"); return(output); } catch (Exception ex) { log.Info(ex.Message); return(null); } }
public static Task <MatchResult> Run([ActivityTrigger] EarningValidation input, TraceWriter log) { log.Info("Validation Starting"); //var input = context.GetInput<EarningValidation>(); var factory = MatcherFactory.CreateMatcher(); var result = factory.Match(input.Commitments, input.Earning, input.Accounts); log.Info("Validation Finishing"); return(Task.FromResult(result)); }
public static Task Run([ActivityTrigger] EarningValidation content) { var matchResult = content.MatchResult; var accounts = content.Accounts; var commitments = matchResult.Commitments; var accountsMatch = accounts == null || commitments == null ? new List <Account>() : accounts.Where(a => commitments.Any(c => c.Id == a.Id && a.IsLevyPayer)); if (!accountsMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.NotLevyPayer); } return(Task.FromResult(true)); }
public static Task Run([ActivityTrigger] EarningValidation content) { var match = content.MatchResult; var commitmentsToMatch = content.Commitments?.Where(c => content.Earning.Uln.HasValue && c.Uln.Equals(content.Earning.Uln.Value)).ToList(); if (!commitmentsToMatch.Any()) { match.ErrorCodes.Add(DataLockErrorCodes.MismatchingUln); } else { match.Commitments = commitmentsToMatch.ToArray(); } return(Task.FromResult(true)); }
public static Task Run([ActivityTrigger] EarningValidation content) { var matchResult = content.MatchResult; var commitments = matchResult.Commitments; var commitmentsToMatch = commitments == null ? new List <Commitment>() : commitments.Where(c => c.Ukprn.Equals(content.Earning.Ukprn)); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MismatchingUkprn); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } return(Task.FromResult(true)); }
public static Task Run([ActivityTrigger] EarningValidation content) { var matchResult = content.MatchResult; var commitments = matchResult.Commitments; var distinctCommitmentIds = commitments == null ? new List <Commitment>() : commitments.Where(x => x.PaymentStatus != (int)PaymentStatus.Cancelled && x.PaymentStatus != (int)PaymentStatus.Deleted && x.PaymentStatus != (int)PaymentStatus.Completed) .Distinct(); if (distinctCommitmentIds.Count() > 1) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MultipleMatches); } return(Task.FromResult(true)); }
public static Task Run([ActivityTrigger] EarningValidation content) { var matchResult = content.MatchResult; var commitments = matchResult.Commitments; var earning = content.Earning; var commitmentsToMatch = commitments == null ? new List <Commitment>() : commitments.Where(c => earning.StartDate >= c.StartDate && earning.StartDate < c.EndDate && earning.StartDate >= c.EffectiveFrom && (c.EffectiveTo == null || earning.StartDate <= c.EffectiveTo)).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.EarlierStartDate); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } return(Task.FromResult(true)); }