public async Task <IActionResult> UpdateSubscription(long restaurant, [FromForm] UpdateSubscriptionRequest request) { var command = new UpdateSubscriptionCommand(restaurant, request.Subscription); return(await HandleActionResultFor(command)); }
public async Task SendNotification([ServiceBusTrigger(ApplicationSettings.JobMessagesQueue)] Guid id, TextWriter log) { try { await log.WriteLineAsync($"Sending notifications for {id}"); var query = new SubscriptionQuery(_settings, _connectionFactory); var subscription = await query.GetSubscriptionById(id); if (subscription == null || subscription.ConfirmationSentOn.HasValue) { return; } var mailMessage = _messageFactory.CreateConfirmationMessage(subscription); subscription.ConfirmationSentOn = DateTime.UtcNow; var update = new UpdateSubscriptionCommand(_settings, _connectionFactory); await update.Update(subscription, async (s, c, t) => { var updateStats = new UpdateStatisticCommands(_settings, _connectionFactory); await updateStats.AddOrUpdateDomainCount(subscription.GetDomain(), c, t); using (var smtpClient = new SmtpClient()) { await smtpClient.SendMailAsync(mailMessage); } }); await log.WriteLineAsync($"Sent email to {subscription.EmailAddress}"); } catch (Exception e) { log.Write($"GUID: {id}, Error: {e.Message}"); throw; } }
public async Task <string> UpdateAsync(SubscriptionUpdateOptions options, string database = null, CancellationToken token = default) { if (options == null) { throw new ArgumentNullException($"Cannot update a subscription if {nameof(options)} is null"); } if (string.IsNullOrEmpty(options.Name) && options.Id == null) { throw new ArgumentNullException($"Cannot update a subscription if both {nameof(options)}.{nameof(options.Name)} and {nameof(options)}.{nameof(options.Id)} are null"); } var requestExecutor = _store.GetRequestExecutor(database); using (requestExecutor.ContextPool.AllocateOperationContext(out JsonOperationContext context)) { var command = new UpdateSubscriptionCommand(options); await requestExecutor.ExecuteAsync(command, context, sessionInfo : null, token : token).ConfigureAwait(false); return(command.Result.Name); } }
public static async Task ProcessMissingConfirmationEmails(TextWriter log) { await log.WriteLineAsync("Starting resend of missing confirmation emails"); var settings = new ApplicationSettings(""); var connectionFactory = new SqlConnectionFactory(); var query = new SubscriptionQuery(settings, connectionFactory); var subscriptions = await query.GetSubscriptionsWithMissingConfirmations(); var messageFactory = new MessageFactory(settings); var updater = new UpdateSubscriptionCommand(settings, connectionFactory); foreach (var subscription in subscriptions.Where(s => s.CreatedOn > DateTime.UtcNow.Date)) { await log.WriteLineAsync($"Sending confirmation email to {subscription.EmailAddress}"); subscription.ConfirmationSentOn = DateTime.UtcNow; await updater.Update(subscription, async (s, c, t) => { using (var smtpClient = new SmtpClient()) { var updateStats = new UpdateStatisticCommands(settings, connectionFactory); await updateStats.AddOrUpdateDomainCount(subscription.GetDomain(), c, t); await smtpClient.SendMailAsync(messageFactory.CreateConfirmationMessage(s)); } }); } await log.WriteLineAsync("Completed resend of missing confirmation emails"); }