public async Task RouteOnQueue(
            [QueueTrigger(QueueName, Connection = Storage.ConnectionStringSetting)] Models.SubmissionData data, ILogger log)
        {
            log.LogInformation($"{nameof(ProcessSubmissionsFunctions)}.{nameof(RouteOnQueue)} function method executing.");

            await _function.RouteSubmission(data);
        }
示例#2
0
            private SendGridMessage BuildEmailMessage(EmailSettings settings, Models.SubmissionData submissionData)
            {
                // 1. Buld SendGrid message with params and substitutions
                var msg = new SendGridMessage();

                msg.SetFrom(new EmailAddress(settings.FromAddress, settings.FromName));
                msg.AddTo(new EmailAddress(settings.ToAddress));

                if (!string.IsNullOrEmpty(settings.TemplateId))
                {
                    msg.SetTemplateId(settings.TemplateId);
                }

                if (string.IsNullOrEmpty(msg.TemplateId))
                {
                    var plainTextContent = settings.TextContent;

                    msg.SetSubject(settings.Subject);
                    msg.AddContent(System.Net.Mime.MediaTypeNames.Text.Plain, plainTextContent);
                }
                else
                {
                    foreach (var s in submissionData.Fields)
                    {
                        msg.AddSubstitution($"-{s.Name}-", s.Value);
                    }
                }

                return(msg);
            }
        private async Task EnqueueSubmission(Models.SubmissionData data, string queueName)
        {
            var queue = GetQueue(queueName);

            await queue.CreateIfNotExistsAsync();

            await queue.AddMessageAsync(data);
        }
        public async Task RouteSubmission(Models.SubmissionData data)
        {
            // Map site url and form name to specialized queue name - if match, then queue info
            var targetQueues = await GetQueueNames(data.SiteUrl, data.FormName);

            if (!targetQueues.Any())
            {
                _log.LogWarning($"No queue mapping found for {data.SiteUrl}");
                return;
            }

            foreach (var queueName in targetQueues)
            {
                await EnqueueSubmission(data, queueName);
            }

            // Delete submission
            _log.LogInformation($"Routed submission {data.Id} for {data.SiteUrl}. Deleting submission from Netlify");
            await DeleteNetlifySubmission(data.Id);
        }