public async Task Run(
            [ServiceBusTrigger(
                 ExportQueue.QueueName,
                 Connection = ExportQueue.ServiceBusConnectionConfigurationKey)]
            string myQueueItem,
            [DurableClient]
            IDurableOrchestrationClient starter)
        {
            var messageContent = JsonConvert.DeserializeObject <ExportMessageQueueContent>(myQueueItem);
            var notificationId = messageContent.NotificationId;

            var sentNotificationDataEntity = await this.notificationDataRepository.GetAsync(
                partitionKey : NotificationDataTableNames.SentNotificationsPartition,
                rowKey : notificationId);

            var exportDataEntity = await this.exportDataRepository.GetAsync(messageContent.UserId, notificationId);

            exportDataEntity.FileName = this.GetFileName();
            var requirement = new ExportDataRequirement(sentNotificationDataEntity, exportDataEntity, messageContent.UserId);

            if (requirement.IsValid())
            {
                string instanceId = await starter.StartNewAsync(
                    nameof(ExportOrchestration.ExportOrchestrationAsync),
                    requirement);
            }
        }
        public async Task Run(
            [ServiceBusTrigger(
                 ExportQueue.QueueName,
                 Connection = ExportQueue.ServiceBusConnectionConfigurationKey)]
            string myQueueItem,
            [DurableClient]
            IDurableOrchestrationClient starter)
        {
            if (myQueueItem == null)
            {
                throw new ArgumentNullException(nameof(myQueueItem));
            }

            if (starter == null)
            {
                throw new ArgumentNullException(nameof(starter));
            }

            var messageContent = JsonConvert.DeserializeObject <ExportMessageQueueContent>(myQueueItem);
            var notificationId = messageContent.NotificationId;

            var sentNotificationDataEntity = await this.notificationDataRepository.GetAsync(
                partitionKey : NotificationDataTableNames.SentNotificationsPartition,
                rowKey : notificationId);

            var exportDataEntity = await this.exportDataRepository.GetAsync(messageContent.UserId, notificationId);

            if (exportDataEntity.ExportType == "ExportAllNotifications")
            {
                //exportDataEntity.FileName = this.GetFileName("FileName_ExportDetails");
                var fileName = this.localizer.GetString("FileName_ExportDetails") + "_" + exportDataEntity.RowKey + ".zip";
                exportDataEntity.FileName = fileName;

                var userId          = exportDataEntity.PartitionKey;
                var requestedTeamId = exportDataEntity.RequestedTeamId;
                var user            = await this.userDataRepository.GetAsync(UserDataTableNames.AuthorDataPartition, userId);

                if (user == null)
                {
                    await this.SyncAuthorAsync(requestedTeamId, userId);
                }
            }
            else
            {
                exportDataEntity.FileName = this.GetFileName("FileName_ExportData");
            }

            var requirement = new ExportDataRequirement(sentNotificationDataEntity, exportDataEntity, messageContent.UserId);

            if (exportDataEntity.ExportType == "ExportAllNotifications")
            {
                string instanceId = await starter.StartNewAsync(nameof(ExportOrchestration.ExportOrchestrationAsync), requirement);
            }
            else if (requirement.IsValid())
            {
                string instanceId = await starter.StartNewAsync(nameof(ExportOrchestration.ExportOrchestrationAsync), requirement);
            }
        }
示例#3
0
        public async Task Run(
            [ServiceBusTrigger(ExportQueue.QueueName, Connection = ExportQueue.ServiceBusConnectionConfigurationKey)]
            string myQueueItem,
            [DurableClient] IDurableOrchestrationClient starter,
            ILogger log)
        {
            if (myQueueItem == null)
            {
                throw new ArgumentNullException(nameof(myQueueItem));
            }

            if (starter == null)
            {
                throw new ArgumentNullException(nameof(starter));
            }

            var messageContent             = JsonConvert.DeserializeObject <ExportMessageQueueContent>(myQueueItem);
            var notificationId             = messageContent.NotificationId;
            var sentNotificationDataEntity = await this.notificationDataRepository.GetAsync(
                partitionKey : NotificationDataTableNames.SentNotificationsPartition,
                rowKey : notificationId);

            var exportDataEntity = await this.exportDataRepository.GetAsync(messageContent.UserId, notificationId);

            exportDataEntity.FileName = this.GetFileName();
            var requirement = new ExportDataRequirement(sentNotificationDataEntity, exportDataEntity, messageContent.UserId);

            if (!requirement.IsValid())
            {
                log.LogError("Export data requirement is not valid.");
                return;
            }

            string instanceId = await starter.StartNewAsync(
                FunctionNames.ExportOrchestration,
                requirement);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
        }