public async Task ProcessQueueAsync(ISmsProcessor processor) { var queue = await TextMessageQueue.GetMailInQueueAsync(this.Database).ConfigureAwait(false); var config = new SmsConfig(this.Database, this.Processor); this.Processor = processor; if (this.IsEnabled()) { foreach (var mail in queue) { var message = SmsHelper.GetMessage(config, mail); await processor.SendAsync(message).ConfigureAwait(false); if (message.Status == Status.Completed) { mail.Delivered = true; mail.DeliveredOn = DateTimeOffset.UtcNow; await TextMessageQueue.SetSuccessAsync(this.Database, mail.QueueId).ConfigureAwait(false); } } } }