示例#1
0
        public QueueAiring Package(BLAiring.Airing airing, Action action, List <BLAiring.ChangeNotification> notifications)
        {
            var queueAiring = new QueueAiring();

            queueAiring.AiringId    = airing.AssetId;
            queueAiring.DeliveredOn = DateTime.UtcNow;
            queueAiring.Action      = action.ToString();

            if (notifications.Any())
            {
                ConsolidateAiringChangeNotification(queueAiring, notifications);
            }

            return(queueAiring);
        }
示例#2
0
        /// <summary>
        /// Consilidates all change notifications
        /// </summary>
        /// <param name="queueAiring">queue airing to send</param>
        /// <param name="notifications">notifications</param>
        private void ConsolidateAiringChangeNotification(QueueAiring queueAiring, List <BLAiring.ChangeNotification> notifications)
        {
            queueAiring.AiringChangeNotifications = new List <AiringChangeNotification>();

            foreach (var notification in notifications)
            {
                if (!queueAiring.AiringChangeNotifications.Any(e => e.ChangeNotificationType == notification.ChangeNotificationType.ToString()))
                {
                    queueAiring.AiringChangeNotifications.Add(new AiringChangeNotification
                    {
                        ChangeNotificationType = notification.ChangeNotificationType.ToString()
                    });
                }

                if (notification.ChangedProperties != null && notification.ChangedProperties.Any())
                {
                    var airingNotification = queueAiring.AiringChangeNotifications.First(e => e.ChangeNotificationType == notification.ChangeNotificationType.ToString());

                    ConsolidateAiringChangeProperties(airingNotification, notification);
                }
            }
        }
示例#3
0
        private void DeliverToSqlDatabase(QueueAiring airingMessage)
        {
            using (var db = new OnDemandReportingContext(appsettings.ReportingSqlDB.ConnectionString))
            {
                if (airingMessage.Action.Equals("Delete"))
                {
                    var existingAiring = db.Airing.SingleOrDefault(a => a.AiringId == airingMessage.AiringId);

                    if (existingAiring != null)
                    {
                        db.Airing.Remove(existingAiring);
                    }
                }
                else if (airingMessage.Action.Equals("Modify"))
                {
                    var airingView = GetAiringBy(airingMessage.AiringId);

                    if (airingView == null)
                    {
                        return;
                    }

                    var airingData = MapAiring(airingView);

                    var existingAiring = db.Airing.SingleOrDefault(a => a.AiringId == airingView.AssetId);

                    if (existingAiring != null)
                    {
                        db.Airing.Remove(existingAiring);
                        db.SaveChanges();
                    }

                    db.Airing.Add(airingData);
                }

                db.SaveChanges();
            }
        }