70 lines
2.1 KiB
C#
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;
|
|
|
|
namespace ResultsBrowser.Filters
|
|
{
|
|
public class DateFilter : IFilter
|
|
{
|
|
public static string GetFilterName() { return "Date"; }
|
|
|
|
///
|
|
/// Obligatory wrappers
|
|
///
|
|
public string GetThisFilterName() { return GetFilterName(); }
|
|
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 DateTime From;
|
|
public DateTime To;
|
|
|
|
|
|
private DateFilterUI userIface;
|
|
|
|
public DateFilter()
|
|
{
|
|
userIface = new DateFilterUI(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>()
|
|
.WhereRestrictionOn(x => x.EndTime)
|
|
.IsBetween(From)
|
|
.And(To)
|
|
.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.EndTime >= From && wm.Batch.EndTime <= To) filteredWaterMeters.Add(wm);
|
|
}
|
|
}
|
|
|
|
return filteredWaterMeters;
|
|
}
|
|
}
|
|
} |