Example #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.");
        }
        public async Task UpdateAccountUsers(GroupedFeedbackRefreshMessage message)
        {
            _logger.LogInformation("Starting upserting user");

            var user = message.RefreshMessages.First().User;
            await _dbRepository.UpsertIntoUsers(user);

            _logger.LogInformation("Done upserting user");
        }