tbf/ResultsBrowser/Filters/ProcedureFilter.cs

70 lines
2.1 KiB
C#

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<WaterMeter> ExecuteQuery(ISession[] sessions, IList<WaterMeter> waterMeters)
{
IList<WaterMeter> filteredWaterMeters = new List<WaterMeter>();
if (waterMeters == null)
{
foreach (var se in sessions)
{
IList<Batch> batches = se.QueryOver<Batch>()
.Where(x => (x.ProcedureName == Procedure))
.List<Batch>();
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;
}
}
}