public async Task ExecuteAsync(ProjectedVacancyDetails myQueueItem)
        {
            List <PublishedAV> publishedVacancies = new List <PublishedAV>();

            sitefinityTokenClient.SetAccessToken(myQueueItem.AccessToken);
            await apprenticeshipVacancyRepository.DeleteExistingAsync(myQueueItem.SocCode);

            logger.Info($"Deleted all vacancies for soc code {myQueueItem.SocCode}, ready for publishing {myQueueItem.Vacancies.Count()} vacancies.");

            foreach (var vacancy in myQueueItem.Vacancies)
            {
                var urlName = await apprenticeshipVacancyRepository.PublishAsync(vacancy, myQueueItem.SocMappingId);

                publishedVacancies.Add(new PublishedAV
                {
                    UrlName          = urlName,
                    VacancyReference = vacancy.VacancyReference,
                    Title            = vacancy.Title,
                    VacancyUrl       = vacancy.VacancyUrl
                });
            }

            output = new PublishedVacancySummary
            {
                SocCode      = myQueueItem.SocCode,
                SocMappingId = myQueueItem.SocMappingId,
                Vacancies    = publishedVacancies,
            };
        }
Пример #2
0
        public static async Task Run(
            [QueueTrigger("projectedavdetails")]
            ProjectedVacancyDetails myQueueItem,
            TraceWriter log,
            [DocumentDB("AVFeedAudit", "AuditRecords", ConnectionStringSetting = "AVAuditCosmosDB")]
            IAsyncCollector <AuditRecord <ProjectedVacancyDetails, PublishedVacancySummary> > auditRecord)
        {
            DateTime startTime = DateTime.UtcNow;

            Function.Common.ConfigureLog.ConfigureNLogWithAppInsightsTarget();

            var result = await Function.PublishSfVacancy.Startup.RunAsync(myQueueItem, Core.RunMode.Azure);

            await auditRecord.AddAsync(new AuditRecord <ProjectedVacancyDetails, PublishedVacancySummary>
            {
                CorrelationId = myQueueItem.CorrelationId,
                StartedAt     = startTime,
                EndedAt       = DateTime.UtcNow,
                Function      = nameof(PublishVacanciesAzFunction),
                Input         = myQueueItem,
                Output        = result.Output,
                Audit         = result.AuditMessages
            });

            log.Info($"C# Queue trigger function processed: {myQueueItem}");
        }
        public async Task ExecuteAsync(ProjectedVacancySummary projectedVacancySummary)
        {
            if (projectedVacancySummary == null)
            {
                throw new ApplicationException(nameof(projectedVacancySummary));
            }

            projectedVacancyDetails = new ProjectedVacancyDetails()
            {
                SocCode = projectedVacancySummary.SocCode, AccessToken = projectedVacancySummary.AccessToken, SocMappingId = projectedVacancySummary.SocMappingId
            };

            var vacancyDetailsList = new List <ApprenticeshipVacancyDetails>();

            foreach (var v in projectedVacancySummary.Vacancies)
            {
                vacancyDetailsList.Add(await avService.GetApprenticeshipVacancyDetailsAsync(v.VacancyReference.ToString()));
            }
            projectedVacancyDetails.Vacancies = vacancyDetailsList;
        }
Пример #4
0
        private static async Task AuditMapping(ProjectedVacancySummary myQueueItem, IAsyncCollector <AuditRecord <object, object> > auditRecord, DateTime startTime, ProjectedVacancyDetails getDetailsResult)
        {
            myQueueItem.AccessToken = null;
            await auditRecord.AddAsync(new AuditRecord <object, object>
            {
                CorrelationId = myQueueItem.CorrelationId,
                StartedAt     = startTime,
                EndedAt       = DateTime.Now,
                Function      = nameof(GetAVDetailsForProjectedAVFunction),
                Input         = myQueueItem,
                Output        = new
                {
                    CorrelationId  = myQueueItem.CorrelationId,
                    SocCode        = getDetailsResult.SocCode,
                    SocMappingId   = getDetailsResult.SocMappingId,
                    VacanciesCount = getDetailsResult.Vacancies.Count()
                },
            });

            int index = 1;

            foreach (var item in getDetailsResult.Vacancies)
            {
                await auditRecord.AddAsync(new AuditRecord <object, object>
                {
                    CorrelationId = myQueueItem.CorrelationId,
                    StartedAt     = startTime,
                    EndedAt       = DateTime.Now,
                    Function      = nameof(GetAVDetailsForProjectedAVFunction),
                    Input         = myQueueItem,
                    Output        = new
                    {
                        CorrelationId = myQueueItem.CorrelationId,
                        SocCode       = getDetailsResult.SocCode,
                        SocMappingId  = getDetailsResult.SocMappingId,
                        Vacancy       = item,
                        Index         = index++
                    },
                });
            }
        }
        /// <summary>
        /// Runs the specified my queue item.
        /// </summary>
        /// <param name="myQueueItem">My queue item.</param>
        /// <param name="mode">The mode.</param>
        public static async Task <FunctionResult <PublishedVacancySummary> > RunAsync(ProjectedVacancyDetails myQueueItem, RunMode mode)
        {
            var container    = ConfigureContainer(mode);
            var publishFunc  = container.Resolve <IPublishAVFunc>();
            var auditService = container.Resolve <IAuditService>();
            await publishFunc.ExecuteAsync(myQueueItem);

            return(new FunctionResult <PublishedVacancySummary> {
                Output = publishFunc.GetOutput(),
                AuditMessages = auditService.GetAuditRecords(),
            });
        }