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