// 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);
     }
 }