private List <Sample> GetSamples() { if (!DataItems.IsNullOrEmpty() && !Components.IsNullOrEmpty()) { var ids = new List <string>(); // Read the Availability Event availabilityEvent = GetEvent(Availability.EVENT_NAME, AgentVersion); if (availabilityEvent != null) { availabilityIds = GetEventIds(availabilityEvent, DataItems, Components); foreach (var id in availabilityIds) { if (!ids.Exists(o => o == id)) { ids.Add(id); } } } // Find all of the Overrides by DataItemId (used for Performance) var overrideItems = DataItems.FindAll(o => o.Type == "PATH_FEEDRATE_OVERRIDE" || (o.Type == "PATH_FEEDRATE" && o.Units == "PERCENT")); foreach (var id in overrideItems.Select(o => o.Id).ToArray()) { if (!ids.Exists(o => o == id)) { ids.Add(id); } } // Read the Quality Event qualityEvent = GetEvent(Quality.EVENT_NAME, AgentVersion); if (qualityEvent != null) { // Program Name DataItem var programNameItem = DataItems.Find(o => o.Type == "PROGRAM"); if (programNameItem != null) { if (!ids.Exists(o => o == programNameItem.Id)) { ids.Add(programNameItem.Id); } } // Execution DataItem var executionItem = DataItems.Find(o => o.Type == "EXECUTION"); if (executionItem != null) { if (!ids.Exists(o => o == executionItem.Id)) { ids.Add(executionItem.Id); } } foreach (var id in GetEventIds(qualityEvent, DataItems, Components)) { if (!ids.Exists(o => o == id)) { ids.Add(id); } } } if (!ids.IsNullOrEmpty()) { // Get Samples return(Database.ReadSamples(ids.ToArray(), RequestQuery.DeviceId, from, to, DateTime.MinValue, long.MaxValue)); } } return(null); }