Exemplo n.º 1
0
        public async Task Run(
            [ServiceBusTrigger("%ProcessActiveFeedbackQueueName%", Connection = "ServiceBusConnection")] string myQueueItem,
            ILogger log,
            [ServiceBus("%GenerateSurveyInviteMessageQueueName%", Connection = "ServiceBusConnection", EntityType = EntityType.Queue)] ICollector <GenerateSurveyCodeMessage> queue)
        {
            log.LogInformation("Data refresh function started.");
            GroupedFeedbackRefreshMessage message = JsonConvert.DeserializeObject <GroupedFeedbackRefreshMessage>(myQueueItem);

            try
            {
                await _userRefreshService.UpdateAccountUsers(message);

                message
                .RefreshMessages
                .Select(rm => new GenerateSurveyCodeMessage
                {
                    UserRef   = rm.User.UserRef,
                    AccountId = rm.User.AccountId,
                    Ukprn     = rm.ProviderId
                })
                .AsParallel()
                .ForAll(queue.Add);
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Error refreshing feedback data");
                throw;
            }

            log.LogInformation("Data refresh function complete.");
        }