using System; using System.Collections.Generic; namespace TBF.Entities { public class TestResult { public virtual int Id { get; protected set; } public virtual string Name { get; set; } public virtual MetersKind MetersKind { get; set; } public virtual IList Meters { get; set; } public virtual IList CombinedMeters { get; set; } /// Value copied from the procedure (Entities.Procedure) public virtual string ProcedureName { get; set; } /// Values copied from the test (Entities.Test) public virtual int TestId { get; set; } /// Test entity ID to distinguish between tests with the same name public virtual string TestName { get; set; } public virtual bool DoNotEvaluate { get; set; } /// Not mapped to the database public virtual bool DoNotPublish { get; set; } /// Not mapped to the database public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h] public virtual float Qto { get; set; } /// Water flow high limit in [m3/h] public virtual float Volume { get; set; } /// Test volume (target) in [l] public virtual float TstTime { get; set; } /// Test time (estimate) in [s] public virtual int Repeats { get; set; } public virtual bool Emptying { get; set; } public virtual bool Zeroing { get; set; } public virtual int Time2MassMsrmt { get; set; } public virtual string Method { get; set; } public virtual float ErrLimLo { get; set; } /// in [%] (usually < 0) public virtual float ErrLimHi { get; set; } /// in [%] (usually > 0) /// To be replaced by the virtual bench component parameters public virtual string FeedingPath { get; set; } public virtual string BenchPath { get; set; } public virtual string OutputPath { get; set; } public virtual string MetersPath { get; set; } /// Results public virtual DateTime TimeStart { get; set; } /// Date and time of the test start public virtual DateTime TimeEnd { get; set; } /// Date and time of the test end public virtual int RepetitionNr { get; set; } /// Repetition number from the set of repeated tests (1...) public virtual float AmbientTempAve { get; set; } /// Average ambient air temperature [degC] public virtual float AmbientPressAve { get; set; } /// Average ambient air pressure public virtual float AmbientHumiAve { get; set; } /// Average ambient air relative humidity [%] public virtual float PressInAvrg { get; set; } /// Input water pressure (average) [Bar] public virtual float PressInStart { get; set; } public virtual float PressInEnd { get; set; } public virtual float PressOutAvrg { get; set; } public virtual float PressOutStart { get; set; } public virtual float PressOutEnd { get; set; } public virtual float TempInAvrg { get; set; } public virtual float TempInStart { get; set; } public virtual float TempInEnd { get; set; } public virtual float TempOutAvrg { get; set; } public virtual float TempOutStart { get; set; } public virtual float TempOutEnd { get; set; } public virtual float TempDivAvrg { get; set; } public virtual float TempDivStart { get; set; } public virtual float TempDivEnd { get; set; } public virtual float MassStartRaw { get; set; } public virtual float MassStart { get; set; } public virtual float MassEndRaw { get; set; } public virtual float MassEnd { get; set; } public virtual float MassDiff { get; set; } public virtual float DensityIn { get; set; } public virtual float DensityOut { get; set; } public virtual float DensityDiv { get; set; } public virtual float Buoyancy { get; set; } ///TODO -> map public virtual float FlowMass { get; set; } /// from conventional true value public virtual float FlowVolume { get; set; } /// from conventional true value public virtual float VolumeCTV { get; set; } /// volume conventional true value public virtual float VolumeMaster { get; set; } /// volume from the master flow meter public virtual float Time { get; set; } /// measurement time in seconds public virtual float ErrorMaster { get; set; } public virtual float PulsesMaster { get; set; } public virtual float ConstMaster { get; set; } /// Pulses per liter master flow meter public virtual float TimeDivStart0 { get; set; } public virtual float TimeDivStart1 { get; set; } public virtual float TimeDivStart2 { get; set; } public virtual float TimeDivStart3 { get; set; } public virtual float TimeDivStart4 { get; set; } public virtual float TimeDivStart5 { get; set; } public virtual float TimeDivEnd0 { get; set; } public virtual float TimeDivEnd1 { get; set; } public virtual float TimeDivEnd2 { get; set; } public virtual float TimeDivEnd3 { get; set; } public virtual float TimeDivEnd4 { get; set; } public virtual float TimeDivEnd5 { get; set; } public TestResult() { Meters = new List(); CombinedMeters = new List(); } public TestResult(MetersKind kind) : this() { MetersKind = kind; if (kind == MetersKind.Single) { for (int i = 0; i < Program.WMsCount; i++) Meters.Add(new MeterTestResult(this)); } else if (kind == MetersKind.Combined) { int combinedCount = Program.WMsCount / 2; for (int i = 0; i < 2 * combinedCount; i++) Meters.Add(new MeterTestResult(this)); for (int i = 0; i < combinedCount; i++) CombinedMeters.Add(new MeterTestResult(this)); } } public TestResult(Test test, int repetitionNr, MetersKind kind) : this(kind) { if (test.Repeats == 1) { Name = test.Name; } else { Name = string.Format("{0} ({1}/{2})", test.Name, repetitionNr, test.Repeats); } RepetitionNr = repetitionNr; /// Copy test parameters from Entities.Procedure object ProcedureName = test.Procedure.Name; /// Copy test parameters from Entities.Test object TestId = test.Id; TestName = test.Name; Qfrom = test.Qfrom; Qto = test.Qto; Volume = test.Volume; TstTime = test.TstTime; Repeats = test.Repeats; Emptying = test.Emptying; Zeroing = test.Zeroing; Time2MassMsrmt = test.Time2MassMsrmt; Method = test.Method; ErrLimLo = test.ErrLimLo; ErrLimHi = test.ErrLimHi; FeedingPath = test.FeedingPath; BenchPath = test.BenchPath; OutputPath = test.OutputPath; MetersPath = test.MetersPath; } } }