private void LoadStrategy() { SlideHeaders.Clear(); SourcePrograms.Clear(); Lengths.Clear(); Stations.Clear(); CustomDemos.Clear(); Dayparts.Clear(); Times.Clear(); if (ResourceManager.Instance.MediaListsFile.ExistsLocal()) { var document = new XmlDocument(); document.Load(ResourceManager.Instance.MediaListsFile.LocalPath); XmlNode node = document.SelectSingleNode(String.Format(@"/{0}Strategy", XmlRootPrefix)); if (node != null) { foreach (XmlNode childeNode in node.ChildNodes) { switch (childeNode.Name) { case "SlideHeader": foreach (XmlAttribute attribute in childeNode.Attributes) { switch (attribute.Name) { case "Value": if (!string.IsNullOrEmpty(attribute.Value) && !SlideHeaders.Contains(attribute.Value)) SlideHeaders.Add(attribute.Value); break; } } break; case "FlexFlightDatesAllowed": { bool temp; if (Boolean.TryParse(childeNode.InnerText, out temp)) FlexFlightDatesAllowed = temp; } break; case "Daypart": var daypart = new Daypart(); foreach (XmlAttribute attribute in childeNode.Attributes) { switch (attribute.Name) { case "Name": daypart.Name = attribute.Value; break; case "Code": daypart.Code = attribute.Value; break; } } if (!string.IsNullOrEmpty(daypart.Name)) Dayparts.Add(daypart); break; case "CustomDemo": foreach (XmlAttribute attribute in childeNode.Attributes) switch (attribute.Name) { case "Value": if (!CustomDemos.Contains(attribute.Value)) CustomDemos.Add(attribute.Value); break; } break; case "Lenght": foreach (XmlAttribute attribute in childeNode.Attributes) { switch (attribute.Name) { case "Value": if (!string.IsNullOrEmpty(attribute.Value) && !SlideHeaders.Contains(attribute.Value)) Lengths.Add(attribute.Value); break; } } break; case "Station": var station = new Station(); foreach (XmlAttribute attribute in childeNode.Attributes) { switch (attribute.Name) { case "Name": station.Name = attribute.Value; break; case "Logo": if (!string.IsNullOrEmpty(attribute.Value)) station.Logo = new Bitmap(new MemoryStream(Convert.FromBase64String(attribute.Value))); break; } } if (!string.IsNullOrEmpty(station.Name)) Stations.Add(station); break; case "Program": var sourceProgram = new SourceProgram(); GetProgramProperties(childeNode, ref sourceProgram); if (!string.IsNullOrEmpty(sourceProgram.Name)) SourcePrograms.Add(sourceProgram); break; case "Status": foreach (XmlAttribute attribute in childeNode.Attributes) switch (attribute.Name) { case "Value": if (!Statuses.Contains(attribute.Value)) Statuses.Add(attribute.Value); break; } break; case "BroadcastMonthTemplate": var monthTemplate = new MediaMonthTemplate(); monthTemplate.Deserialize(childeNode); MonthTemplatesMondayBased.Add(monthTemplate); MonthTemplatesSundayBased.Add(monthTemplate); break; case "DefaultWeeklyScheduleSettings": DefaultWeeklyScheduleSettings.Deserialize(childeNode); break; case "DefaultMonthlyScheduleSettings": DefaultMonthlyScheduleSettings.Deserialize(childeNode); break; case "DefaultSnapshotSettings": DefaultSnapshotSettings.Deserialize(childeNode); break; case "DefaultSnapshotSummarySettings": DefaultSnapshotSummarySettings.Deserialize(childeNode); break; case "DefaultOptionsSettings": DefaultOptionsSettings.Deserialize(childeNode); break; case "DefaultOptionsSummarySettings": DefaultOptionsSummarySettings.Deserialize(childeNode); break; case "DefaultBroadcastCalendarSettings": DefaultBroadcastCalendarSettings.Deserialize(childeNode); break; case "DefaultCustomCalendarSettings": DefaultCustomCalendarSettings.Deserialize(childeNode); break; } } } } if (SourcePrograms.Count > 0) { Times.AddRange(SourcePrograms.Select(x => x.Time).Distinct().ToArray()); Days.AddRange(SourcePrograms.Select(x => x.Day).Distinct().ToArray()); } }
private void GetProgramProperties(XmlNode node, ref SourceProgram sourceProgram) { foreach (XmlAttribute attribute in node.Attributes) { switch (attribute.Name) { case "Name": sourceProgram.Name = attribute.Value; break; case "Station": sourceProgram.Station = attribute.Value; break; case "Daypart": sourceProgram.Daypart = attribute.Value; break; case "Day": sourceProgram.Day = attribute.Value; break; case "Time": sourceProgram.Time = attribute.Value; break; } } foreach (XmlNode childNode in node.ChildNodes) switch (childNode.Name) { case "Demo": var demo = new Demo(); foreach (XmlAttribute attribute in childNode.Attributes) { switch (attribute.Name) { case "Source": demo.Source = attribute.Value; break; case "DemoType": int tempInt; if (Int32.TryParse(attribute.Value, out tempInt)) demo.DemoType = (DemoType)tempInt; break; case "Name": demo.Name = attribute.Value; break; case "Value": demo.Value = attribute.Value; break; } } if (!String.IsNullOrEmpty(demo.Name) && !String.IsNullOrEmpty(demo.Source) && !String.IsNullOrEmpty(demo.Value)) sourceProgram.Demos.Add(demo); break; } }