public void Read_With_TDV() { var init = new DatabaseInitializer { TreeDefaults = null, }; using var db = init.CreateDatabase(); var tree = new Tree { CruiseID = init.CruiseID, TreeID = Guid.NewGuid().ToString(), TreeNumber = 1, CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", SpeciesCode = "sp1", LiveDead = "L", }; db.Insert(tree); var tm = new TreeMeasurment { TreeID = tree.TreeID, }; db.Insert(tm); var tdv = new AutoFaker <TreeDefaultValue>() .Ignore(x => x.TreeDefaultValue_CN) .Ignore(x => x.CreatedBy) .Ignore(x => x.Created_TS) .Ignore(x => x.ModifiedBy) .Ignore(x => x.Modified_TS) .RuleFor(x => x.CruiseID, y => init.CruiseID) .Generate(); tdv.CruiseID = init.CruiseID; tdv.SpeciesCode = "sp1"; tdv.PrimaryProduct = "01"; db.Insert(tdv); var tm_defaults = db.From <TreeMeasurment_DefaultResolved>().Query().Single(); tm_defaults.Should().NotBeNull(); tm_defaults.FormClass.Should().Be(tdv.FormClass.ToString()); tm_defaults.Grade.Should().Be(tdv.TreeGrade); tm_defaults.HiddenPrimary.Should().Be(tdv.HiddenPrimary.ToString()); tm_defaults.RecoverablePrimary.Should().Be(tdv.Recoverable.ToString()); }
public void UpsertTreeMeasurments(TreeMeasurment mes) { if (mes is null) { throw new ArgumentNullException(nameof(mes)); } Database.Execute2( UPSERT_TREEMEASURMENT_COMMAND, new { mes.TreeID, mes.SeenDefectPrimary, mes.SeenDefectSecondary, mes.RecoverablePrimary, mes.HiddenPrimary, mes.Grade, mes.HeightToFirstLiveLimb, mes.PoleLength, mes.ClearFace, mes.CrownRatio, mes.DBH, mes.DRC, mes.TotalHeight, mes.MerchHeightPrimary, mes.MerchHeightSecondary, mes.FormClass, mes.UpperStemDiameter, mes.UpperStemHeight, mes.DBHDoubleBarkThickness, mes.TopDIBPrimary, mes.TopDIBSecondary, mes.DefectCode, mes.DiameterAtDefect, mes.VoidPercent, mes.Slope, mes.Aspect, mes.Remarks, mes.IsFallBuckScale, mes.Initials, DeviceID, } ); }
public void Read_With_FieldSetup() { var init = new DatabaseInitializer { TreeDefaults = null, }; using var db = init.CreateDatabase(); var tree = new Tree { CruiseID = init.CruiseID, TreeID = Guid.NewGuid().ToString(), TreeNumber = 1, CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", SpeciesCode = "sp1", LiveDead = "L", }; db.Insert(tree); var tm = new TreeMeasurment { TreeID = tree.TreeID, }; db.Insert(tm); var tfs = new TreeFieldSetup { CruiseID = init.CruiseID, Field = "DBH", StratumCode = "st1", SampleGroupCode = "sg1", DefaultValueReal = 101.3, }; db.Insert(tfs); var tm_defaults = db.From <TreeMeasurment_DefaultResolved>().Query().Single(); tm_defaults.Should().NotBeNull(); tm_defaults.DBH.Should().Be("101.3"); }
public void MigrateTreeErrors_measureTree() { var toPath = GetTempFilePath("MigrateTreeErrors_measureTree.cruise"); var fromPath = GetTempFilePath("MigrateTreeErrors_measureTree.crz3"); var init = new DatabaseInitializer(); var cruiseID = init.CruiseID; using var db = init.CreateDatabaseFile(fromPath); var tree = new Tree { CruiseID = cruiseID, TreeID = Guid.NewGuid().ToString(), CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", TreeNumber = 1, CountOrMeasure = "M", }; db.Insert(tree); var tm = new TreeMeasurment { TreeID = tree.TreeID, }; db.Insert(tm); using var toDb = new DAL(toPath, true); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(cruiseID, db, toDb); var errorLogs = toDb.From <CruiseDAL.V2.Models.ErrorLog>().Query().ToArray(); errorLogs.Should().HaveCount(4); errorLogs.Should().Contain(x => x.Message == "Species Code Is Missing"); errorLogs.Should().Contain(x => x.Message == "Live/Dead Value Is Missing"); errorLogs.Should().Contain(x => x.Message == "Aleast One Height Parameter Must Be Greater Than 0"); errorLogs.Should().Contain(x => x.Message == "DBH or DRC must be greater than 0"); }
public void MigrateFromV3ToV2_With_FieldDefaults() { var initializer = new DatabaseInitializer(); var fromPath = GetTempFilePath("MigrateFromV3ToV2.crz3"); var toPath = GetTempFilePath("MigrateFromV3ToV2.cruise"); using var fromDb = initializer.CreateDatabaseFile(fromPath); var sg = initializer.SampleGroups.First(); fromDb.Insert(new TreeFieldSetup() { CruiseID = initializer.CruiseID, SampleGroupCode = sg.SampleGroupCode, StratumCode = sg.StratumCode, Field = "DBH", DefaultValueReal = 12.0, }); fromDb.Insert(new TreeFieldSetup() { CruiseID = initializer.CruiseID, StratumCode = sg.StratumCode, Field = "DBH", DefaultValueReal = 11.0, }); fromDb.Insert(new TreeFieldSetup() { CruiseID = initializer.CruiseID, StratumCode = sg.StratumCode, Field = "DRC", DefaultValueReal = 13.0, }); var tree = new Tree() { CruiseID = initializer.CruiseID, TreeID = Guid.NewGuid().ToString(), TreeNumber = 101, CuttingUnitCode = initializer.Units.First(), StratumCode = sg.StratumCode, SampleGroupCode = sg.SampleGroupCode, }; fromDb.Insert(tree); var tm = new TreeMeasurment { TreeID = tree.TreeID, }; fromDb.Insert(tm); using var toDb = new DAL(toPath, true); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(initializer.CruiseID, fromDb, toDb); var treeAgain = toDb.From <V2.Models.Tree>().Where("TreeNumber = 101").Query().Single(); treeAgain.Should().NotBeNull(); treeAgain.DBH.Should().Be(12.0); treeAgain.DRC.Should().Be(13.0); ValidateMigration(fromDb, toDb); }
public void ReadTreeAuditErrors_With_Two_AuditRules() { var init = new DatabaseInitializer(); using var db = init.CreateDatabase(); var tree = new Tree { CruiseID = init.CruiseID, TreeID = Guid.NewGuid().ToString(), TreeNumber = 1, CuttingUnitCode = "u1", StratumCode = "st3", SampleGroupCode = "sg1", SpeciesCode = "sp1", CountOrMeasure = "M", LiveDead = "L", }; db.Insert(tree); var tm = new TreeMeasurment { TreeID = tree.TreeID, DBH = 101, }; db.Insert(tm); var tar = new TreeAuditRule { CruiseID = init.CruiseID, TreeAuditRuleID = Guid.NewGuid().ToString(), Field = "DBH", Max = 100, }; db.Insert(tar); var tars = new TreeAuditRuleSelector { CruiseID = init.CruiseID, TreeAuditRuleID = tar.TreeAuditRuleID, SpeciesCode = "sp1", PrimaryProduct = "01", LiveDead = "L", }; db.Insert(tars); var tfs = new TreeFieldSetup { CruiseID = init.CruiseID, Field = "DBH", StratumCode = "st3", }; db.Insert(tfs); var tar2 = new TreeAuditRule { CruiseID = init.CruiseID, TreeAuditRuleID = Guid.NewGuid().ToString(), Field = "DBH", Max = 99, }; db.Insert(tar2); var tars2 = new TreeAuditRuleSelector { CruiseID = init.CruiseID, TreeAuditRuleID = tar.TreeAuditRuleID, SpeciesCode = "sp1", }; db.Insert(tars2); var taeRecords = db.QueryGeneric("SELECT * FROM TreeAuditError").ToArray(); taeRecords.Should().HaveCount(1); // not sure how to make TreeAuditErrors return only one error per tree, but its a low impact issue }