示例#1
0
        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);
        }
示例#2
0
        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;
            }
        }