Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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)));
 }