// ReSharper disable once UnusedMember.Global public async Task GenerateReleaseContent( [QueueTrigger(GenerateReleaseContentQueue)] GenerateReleaseContentMessage message, ExecutionContext executionContext, ILogger logger) { logger.LogInformation("{0} triggered: {1}", executionContext.FunctionName, message); await UpdateStage(message, Started); try { var context = new PublishContext(GetNextScheduledPublishingTime(), true); await _contentService.UpdateContent(context, message.Releases.Select(tuple => tuple.ReleaseId).ToArray()); await UpdateStage(message, Complete); } catch (Exception e) { logger.LogError(e, "Exception occured while executing {0}", executionContext.FunctionName); logger.LogError("{0}", e.StackTrace); await UpdateStage(message, Failed, new ReleasePublishingStatusLogMessage($"Exception in content stage: {e.Message}")); } logger.LogInformation("{0} completed", executionContext.FunctionName); }
private async Task UpdateStage(GenerateReleaseContentMessage message, ReleasePublishingStatusContentStage stage, ReleasePublishingStatusLogMessage logMessage = null) { foreach (var(releaseId, releaseStatusId) in message.Releases) { await _releasePublishingStatusService.UpdateContentStageAsync(releaseId, releaseStatusId, stage, logMessage); } }