コード例 #1
0
        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);
        }
コード例 #2
0
        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++
                    },
                });
            }
        }