using System; using System.Collections.Generic; using System.Linq; using DTS.Common.Interface.DataRecorders; using DTS.Common.Storage; using DTS.Common.Enums.Hardware; using DTS.Common.Classes.Hardware; using DTS.Common.Classes.TestSetups; using DTS.Common.Interface.TestSetups; using DataPROWin7.Common; namespace DTS.Common.DataModel.Common.DbWrappers { public class TestSetupHardwareGet : TestSetupHardwareRecord { public TestSetupHardwareGet() { } public TestSetupHardwareGet(ITestSetupHardwareRecord copy) : base(copy) { } public bool AddOrRemove { get => AddDAS; set { AddDAS = value; OnPropertyChanged("AddOrRemove"); } } /// /// This ensures that any bad data in the database can be repaired in one place. /// FB 17777 /// /// /// /// public List TestSetupHardwareGet_Wrapper(int? testSetupId, Dictionary hardwareLookup) { var testSetupHardwareGetList = new List(); var hr = DbOperations.TestSetupHardwareGet(testSetupId, out var records); if (0 == hr && null != records && records.Any()) { foreach (var record in records) { var testSetupHardwareGet = new TestSetupHardwareGet(record); if (record.AntiAliasFilterRate == 0 && null != hardwareLookup) { var dasTypeEnum = hardwareLookup[record.DASId].DASTypeEnum; testSetupHardwareGet.AntiAliasFilterRate = RepairAntiAliasFilterRate(dasTypeEnum, record.SamplesPerSecond); } testSetupHardwareGetList.Add(testSetupHardwareGet); } } //Now make sure we don't return any 0s in AntiAliasFilterRate (hardwareLookup may have been passed in as null) foreach (var testSetupHardwareGet in testSetupHardwareGetList) { if (testSetupHardwareGet.AntiAliasFilterRate == 0) { var dasTypeEnum = GetDASTypeEnumFromId(testSetupHardwareGet.DASId); testSetupHardwareGet.AntiAliasFilterRate = RepairAntiAliasFilterRate(dasTypeEnum, testSetupHardwareGet.SamplesPerSecond); } } return testSetupHardwareGetList; } private HardwareTypes GetDASTypeEnumFromId(int dasId) { var dasGet = new DASGet(); var dasGetList = dasGet.DASGet_Wrapper(); foreach (var das in dasGetList) { if (das.DASId == dasId) { var dasTemp = new DTS.Common.ISO.Hardware(); //Get of DASTypeEnum returns the enum: (HardwareTypes)DASType dasTemp.DASType = das.Type; return dasTemp.DASTypeEnum; } } return HardwareTypes.UNDEFINED; } private int RepairAntiAliasFilterRate(HardwareTypes dasTypeEnum, int samplesPerSecond) { int antiAliasFilterRate = 0; switch (dasTypeEnum) { case HardwareTypes.DIM: case HardwareTypes.G5INDUMMY: case HardwareTypes.G5VDS: case HardwareTypes.SIM: case HardwareTypes.TDAS_Pro_Rack: case HardwareTypes.TDAS_LabRack: case HardwareTypes.TOM: //TDAS allows 0, so don't do the repair //antiAliasFilterRate = Convert.ToInt32(SerializedSettings.GetAAFException(SerializableAAF.DAS_TYPE.TDAS, samplesPerSecond)); break; default: antiAliasFilterRate = Convert.ToInt32(SerializedSettings.GetAAFException(SerializableAAF.DAS_TYPE.SLICE, samplesPerSecond)); break; } return antiAliasFilterRate; } } }