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