public bool EnqueueAudienceChange(AudienceChangeNotification audience) { if (string.IsNullOrEmpty(audience.idAudience)) { return(false); } bool result = false; string notification = JsonConvert.SerializeObject(audience); string queueName = ConfigurationManager.AppSettings["azure-queue-audience-changenotification"]; QueueManager.InsertMessage(notification, queueName); result = true; return(result); }
public void ProcessAudienceChangeNotification(string message, Dictionary <string, int> userPriority) { AudienceChangeNotification changeNotification = JsonConvert.DeserializeObject <AudienceChangeNotification>(message); switch (changeNotification.ChangeType) { case TypeAudienceChange.ActiveChannels: string queryAudienceChannel = $"SELECT * FROM {CosmosCollections.AudienceChannel.ToString()} WHERE {CosmosCollections.AudienceChannel.ToString()}.AudienceId='{changeNotification.idAudience}'"; List <AudienceChannelDocument> documents = context.ExecuteQuery <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), queryAudienceChannel); foreach (AudienceChannelDocument doc in documents) { doc.IsActive = true; context.UpsertDocument <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), doc); } break; case TypeAudienceChange.ChangeDescription: string queryAudienceChannelDesc = $"SELECT * FROM {CosmosCollections.AudienceChannel.ToString()} WHERE {CosmosCollections.AudienceChannel.ToString()}.AudienceId='{changeNotification.idAudience}' and {CosmosCollections.AudienceChannel.ToString()}.IsDefaultDescription=true"; List <AudienceChannelDocument> documentsForCDescription = context.ExecuteQuery <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), queryAudienceChannelDesc); foreach (AudienceChannelDocument doc in documentsForCDescription) { doc.Description = changeNotification.Description; context.UpsertDocument <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), doc); } break; case TypeAudienceChange.ChangeImage: string queryAudienceChannelImg = $"SELECT * FROM {CosmosCollections.AudienceChannel.ToString()} WHERE {CosmosCollections.AudienceChannel.ToString()}.AudienceId='{changeNotification.idAudience}' and {CosmosCollections.AudienceChannel.ToString()}.IsDefaultImage=true"; List <AudienceChannelDocument> documentsForImage = context.ExecuteQuery <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), queryAudienceChannelImg); foreach (AudienceChannelDocument doc in documentsForImage) { doc.ImageUrl = changeNotification.ImageUrl; context.UpsertDocument <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), doc); } break; case TypeAudienceChange.DisableVisibility: string queryAudienceChannelVisibility = $"SELECT * FROM {CosmosCollections.AudienceChannel.ToString()} WHERE {CosmosCollections.AudienceChannel.ToString()}.AudienceId='{changeNotification.idAudience}' and {CosmosCollections.AudienceChannel.ToString()}.Visibility='true'"; List <AudienceChannelDocument> documentsForVisibility = context.ExecuteQuery <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), queryAudienceChannelVisibility); foreach (AudienceChannelDocument doc in documentsForVisibility) { doc.Visibility = false; context.UpsertDocument <AudienceChannelDocument>(databaseName, CosmosCollections.AudienceChannel.ToString(), doc); } break; } }