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); }
/// <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); } } }
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(); } }