private static MappedVacancySummary GetTestMappedVacancySummary(Scenario scenario) { var v = new MappedVacancySummary { SocCode = "T01" }; switch (scenario) { case Scenario.OnlySingleProviderMoreThanTwo: v.Vacancies = GetTestVacanciesSingleProviderMoreThanTwo(); break; case Scenario.MultipeProvidersMoreThanTwo: v.Vacancies = GetTestVacanciesMultipeProvidersMoreThanTwo(); break; case Scenario.OnlyOneAvailable: v.Vacancies = GetTestVacanciesOnlyOneAvailable(); break; case Scenario.NoneAvailable: ; break; default: throw new InvalidOperationException("Test Scenarios not supported"); } return(v); }
public static ProjectedVacancySummary Run(RunMode mode, MappedVacancySummary input) { var container = ConfigureContainer(mode); var getAvFunc = container.Resolve <IProjectVacanciesFunc>(); container.Resolve <IAuditService>(); getAvFunc.Execute(input); return(getAvFunc.GetOutput()); }
public void Execute(MappedVacancySummary mappedVacancySummary) { if (mappedVacancySummary != null) { projectedVacanciesForSOC = new ProjectedVacancySummary { SocCode = mappedVacancySummary.SocCode, SocMappingId = mappedVacancySummary.SocMappingId, AccessToken = mappedVacancySummary.AccessToken, }; //if none were found for SOC if (mappedVacancySummary.Vacancies == null) { return; } var numberProvoidersFound = mappedVacancySummary.Vacancies.Select(v => v.TrainingProviderName).Distinct().Count(); var projection = Enumerable.Empty <ApprenticeshipVacancySummary>(); if (numberProvoidersFound > 1) { //have multipe providers projection = mappedVacancySummary.Vacancies .GroupBy(v => v.TrainingProviderName) .Select(g => g.First()) .Take(2); } else { //just have a single or no provider projection = mappedVacancySummary.Vacancies.Take(2); } projectedVacanciesForSOC.Vacancies = projection; } }
private static async Task AuditProjections(SocMapping myQueueItem, IAsyncCollector <AuditRecord <object, object> > auditRecord, DateTime startTime, MappedVacancySummary mappedResult, ProjectedVacancySummary projectedResult) { myQueueItem.AccessToken = null; await auditRecord.AddAsync(new AuditRecord <object, object> { CorrelationId = myQueueItem.CorrelationId, StartedAt = startTime, EndedAt = DateTime.Now, Function = "ProjectVacanciesAzFunction", Input = new { CorrelationId = myQueueItem.CorrelationId, SocCode = mappedResult.SocCode, SocMappingId = mappedResult.SocMappingId, VacanciesCount = mappedResult.Vacancies.Count() }, Output = projectedResult, }); }
private static async Task AuditMapping(SocMapping myQueueItem, IAsyncCollector <AuditRecord <object, object> > auditRecord, DateTime startTime, MappedVacancySummary mappedResult) { myQueueItem.AccessToken = null; await auditRecord.AddAsync(new AuditRecord <object, object> { CorrelationId = myQueueItem.CorrelationId, StartedAt = startTime, EndedAt = DateTime.Now, Function = nameof(GetAVForSocMappingAzFunction), Input = myQueueItem, Output = new { CorrelationId = myQueueItem.CorrelationId, SocCode = mappedResult.SocCode, SocMappingId = mappedResult.SocMappingId, VacanciesCount = mappedResult.Vacancies.Count() }, }); int index = 1; foreach (var item in mappedResult.Vacancies) { await auditRecord.AddAsync(new AuditRecord <object, object> { CorrelationId = myQueueItem.CorrelationId, StartedAt = startTime, EndedAt = DateTime.Now, Function = nameof(GetAVForSocMappingAzFunction), Input = myQueueItem, Output = new { CorrelationId = myQueueItem.CorrelationId, SocCode = mappedResult.SocCode, SocMappingId = mappedResult.SocMappingId, Vacancy = item, Index = index++ }, }); } }