using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Windows.Forms; using System.Xml.Serialization; using NHibernate; using Results.Entities; using ResultsBrowser.Resources; namespace ResultsBrowser.Filters { public class ProcedureFilter : IFilter { public static string GetFilterID() { return "Procedure"; } public static string GetFilterName() { return Strings.Procedure; } /// /// Obligatory wrappers /// public string GetThisFilterID() { return GetFilterID(); } public void Save(StringBuilder sb) { (new XmlSerializer(this.GetType())).Serialize(new StringWriter(sb), this); } public void Data2UI() { userIface.Data2UI(); } public void UI2Data() { userIface.UI2Data(); } public UserControl GetFilterUI() { return userIface as UserControl; } /// /// Serialized filter data /// public string Procedure; private ProcedureFilterUI userIface; public ProcedureFilter() { userIface = new ProcedureFilterUI(this); } public IList ExecuteQuery(ISession[] sessions, IList waterMeters) { IList filteredWaterMeters = new List(); if (waterMeters == null) { foreach (var se in sessions) { IList batches = se.QueryOver() .Where(x => (x.ProcedureName == Procedure)) .List(); foreach (var b in batches) { foreach (var wm in b.WaterMeters) filteredWaterMeters.Add(wm); } } } else { foreach (var wm in waterMeters) { if (wm.Batch.ProcedureName == Procedure) filteredWaterMeters.Add(wm); } } return filteredWaterMeters; } } }