public async Task EnqueueEmailAsync(IEmailData emailData) { var settings = await _campaignSettingsRepository.GetCachedAsync(emailData.CampaignId); if (settings != null && !string.IsNullOrEmpty(settings.EmailBlackList) && settings.EmailBlackList.Contains(emailData.To)) { await _log.WriteWarningAsync(nameof(EnqueueEmailAsync), $"Campaign: {emailData.CampaignId}, Template: {emailData.TemplateId}, To: {emailData.To}", $"Black-listed email skipped"); } else { await _emailRepository.PushToQueueAsync(emailData); await _log.WriteInfoAsync(nameof(EnqueueEmailAsync), $"Campaign: {emailData.CampaignId}, Template: {emailData.TemplateId}, To: {emailData.To}", $"Email enqueued"); } }
public async Task <int> HandleTransactionsAsync(ITransaction[] transactions) { var blocks = transactions .GroupBy(t => new { t.BlockId, Currency = Enum.GetName(typeof(CurrencyType), t.Currency) }) .Select(g => g.Key); await _log.WriteInfoAsync(nameof(HandleTransactionsAsync), $"Transactions: {transactions.Length}, Blocks: {blocks.ToJson()}", $"Transactions processing started"); var count = 0; foreach (var tx in transactions) { var payInAddress = await _payInAddressRepository.GetAsync(tx.PayInAddress, tx.Currency); if (payInAddress == null) { // destination address is not a pay-in address of any ICO investor continue; } var campaignSettings = await _campaignSettingsRepository.GetCachedAsync(payInAddress.CampaignId, reloadIf : x => string.IsNullOrEmpty(x?.TransactionQueueSasUrl)); await _transactionRepository.EnqueueTransactionAsync(tx, payInAddress, campaignSettings.TransactionQueueSasUrl); await _log.WriteInfoAsync(nameof(HandleTransactionsAsync), $"Transaction: {tx.ToJson()}", $"Transaction sent to {payInAddress.CampaignId} queue"); count++; } await _log.WriteInfoAsync(nameof(HandleTransactionsAsync), $"Investments: {count}", $"Transactions processing completed"); return(count); }
public async Task <CampaignSettingsModel> GetCampaignSettings([FromRoute] string campaignId) { return(CampaignSettingsModel.Create(await _campaignSettingsRepository.GetCachedAsync(campaignId))); }