private async Task ProcessPushNotifications(CampaignQueueItem campaign) { if (campaign.IsGlobal) { var globalMessage = new PushNotificationQueueItem { Campaign = campaign, Broadcast = true }; await EventDispatcher.RaiseEventAsync(globalMessage, options => options.WrapInEnvelope(false) .WithQueueName(QueueNames.SendPushNotification) ); } else { foreach (var userCode in campaign.SelectedUserCodes) { var userMessage = new PushNotificationQueueItem { UserCode = userCode, Campaign = campaign, Broadcast = false }; await EventDispatcher.RaiseEventAsync(userMessage, options => options.WrapInEnvelope(false) .WithQueueName(QueueNames.SendPushNotification) ); } } }
public async Task Process(CampaignQueueItem campaign) { if (!campaign.Published) { return; } if (campaign.DeliveryChannel.HasFlag(CampaignQueueItem.CampaignDeliveryChannel.PushNotification)) { await ProcessPushNotifications(campaign); return; } if (campaign.DeliveryChannel.HasFlag(CampaignQueueItem.CampaignDeliveryChannel.Email)) { // TODO: Create next hop to send campaign via email. return; } if (campaign.DeliveryChannel.HasFlag(CampaignQueueItem.CampaignDeliveryChannel.SMS)) { // TODO: Create next hop to send campaign via SMS gateway. return; } }
private async Task ProcessPushNotifications(CampaignQueueItem campaign) { if (campaign.IsGlobal) { var globalMessage = new PushNotificationQueueItem { Campaign = campaign, Broadcast = true }; await MessageQueue.Enqueue(globalMessage, campaign.ActivePeriod?.From?.DateTime ?? DateTime.UtcNow); } else { foreach (var userCode in campaign.SelectedUserCodes) { var userMessage = new PushNotificationQueueItem { UserCode = userCode, Campaign = campaign, Broadcast = false }; await MessageQueue.Enqueue(userMessage, campaign.ActivePeriod?.From?.DateTime ?? DateTime.UtcNow); } } }